C Programming Tutorial 4: Pointers and Arrays

1.0 Introduction A pointer variable holds the address of another variable. It is said to be “pointing” to that variable. For example, int *ip; defines a variable ip of type integer pointer. ip points to a variable of type integer. At the implementation level, it holds the address of a variable to type integer. The …

C Programming Tutorial 4: Pointers and Arrays Read More »

C Programming Tutorial 3: Control Flow and Functions

1.0 Introduction A C program comprises of global data and functions. A program must have a main function and the execution starts at the first statement in the main function. A function has local data and statements. The control flow deals with the order in which statements are executed by a program. In this post, …

C Programming Tutorial 3: Control Flow and Functions Read More »

C Programming Tutorial 2: Data Types and Expressions

1.0 Introduction Data is an important part of a program. In fact, programs are written so that data can be captured, processed, stored and presented to the user. The success of a program depends on how well data has been organized and used. In this post, we will be looking at data types and expressions …

C Programming Tutorial 2: Data Types and Expressions Read More »

C Programming Tutorial 1 – Getting Started

1.0 Introduction C is a procedural programming language invented by Dennis Ritchie in 1972. C is, possibly, the most widely used programming language in the last fifty years. There are some unique features of C. It is a small language; so it can be easily learnt. It can be used for almost all kinds of …

C Programming Tutorial 1 – Getting Started Read More »

I/O multiplexing: select, poll and epoll in Linux

1.0 I/O multiplexing I/O multiplexing is the the ability to perform I/O operations on multiple file descriptors. Input operations like read, accept and calls for receiving messages block when there is no incoming data. So, if an input call is made and it blocks, we may miss data from other file descriptors. To circumvent this, …

I/O multiplexing: select, poll and epoll in Linux Read More »

POSIX real-time signals in Linux

1.0 Signals Signals are notifications delivered asynchronously to a process by the kernel. Signals are grouped in two categories. First, there are standard signals, which have been there since the early days of Unix. Second, there are POSIX real-time signals which are specified in POSIX.1b, or, IEEE Std 1003.1b-1993, for Real-time Extensions for POSIX compliant …

POSIX real-time signals in Linux Read More »

How to create a temporary file in Linux

1.0 Temporary Files Quite often, we need temporary files in our programs. Some intermediate data needs to be stored and the file can be discarded when the process terminates. There are functions and command to create temporary files in Linux. The mkstemp function creates a temporary file and returns a file descriptor. The mkdtemp function …

How to create a temporary file in Linux Read More »

Interprocess Communication using Unix Domain Sockets

1.0 Unix Domain Sockets A socket is a communication endpoint at a host computer. The socket API provides calls for communication between processes. The socket system call is, int socket (int domain, int type, int protocol); The first parameter to the socket system call is the domain. The domain is actually the communication domain and …

Interprocess Communication using Unix Domain Sockets Read More »

File I/O in Linux

1.0 Input and Output (I/O) All programs need to interact with the external world which makes I/O important. Programs store data in files which provide large persistent storage. In this post we will look at the system calls and functions for file I/O and the issues that govern the program and I/O device interaction. 2.0 …

File I/O in Linux Read More »

Files in Linux

1.0 Files There are two basic concepts in Linux – processes and files. The processes do things and files keep all the important data. An efficient filesystem is important for an operating system. When Unix was conceived around 1969-70, several design decisions were taken to simplify the filesystem. It was thought that if something was …

Files in Linux Read More »