• 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 ...

  • 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 Buffered I/O

    Reading ...

  • How to trim a string in C

    Trim a string

    The problem of removing leading and trailing whitespace characters in strings occurs in programming quite often. Here is a solution.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>void trim (char *dest, char *src);int main (int argc, char **argv)
    char inbuf ...
  • Socket programming using the select system call

    Server and clients

    1.0 Client-Server Paradigm

    The Client-Server paradigm divides the software architecture of a system in two parts, the server and its clients. The server works in the background and maintains the ...

  • Socket Programming using UDP in C

    1.0 Datagram sockets

    There are two major types of network sockets, viz. Stream sockets (SOCK_STREAM) and Datagram sockets (SOCK_DGRAM). The socket type defines the semantics of communication between this socket and its remote counterpart. Stream sockets provide full-duplex reliable sequenced data streams. ...

  • Socket Programming using TCP in C

    1.0 Client-server model

    Client - Server System

    Client server model is a software architecture paradigm prevalent in distributed applications. A server has information resources and processes that provide answers to queries and other services to remote ...

  • Signals in Linux


    1.0 Signals

    Signals are software interrupts that are delivered to a process by the kernel. A signal indicates that an event has occurred and the process must take note of it. A signal is delivered asynchronously to a process. Whatever the process was doing is suspended and ...

  • D-Bus Tutorial

    1.0 D-Bus

    D-Bus is a mechanism for interprocess communication under Linux and other Unix-like systems. D-Bus has a layered architecture. At the lowest level is the D-Bus wire protocol described in the D-Bus Specification. The libdbus library is an implementation ...

  • Interprocess communication using POSIX Shared Memory in Linux

    1.0 Shared Memory

    Shared memory is the fastest method of interprocess communication (IPC) under Linux and other Unix-like systems. The system provides a shared memory segment which the calling process can map to its address space. After that, it behaves just like any other ...

  • Interprocess communication using System V Shared Memory in Linux

    1.0 Shared Memory

    Shared memory is one of the three interprocess communication (IPC) mechanisms available under Linux and other Unix-like systems. The other two IPC mechanisms are the message queues and semaphores. In case of shared memory, a shared memory segment is created by ...

  • Queue implementation in C using linked list

    1.0 Queue

    A queue is something we see often in our daily lives. People stand in a queue to get into a bus, to get food in a buffet, buy tickets from the ticket counter, etc. Queues are a fair solution of ordering people ...

  • POSIX Threads Synchronization in C

    1.0 POSIX Threads Synchronization

    POSIX Threads provide multiple flows of execution within a process. The threads have their own stacks but share the global data and the heap. So the global variables are visible to multiple threads. Also, the threads need ...

  • POSIX Threads Programming in C

    1.0 POSIX threads

    A process is an execution environment in an operating system. A process has code and data segments which are initialized from a program during an exec system call. A process has a thread of execution, ...

  • POSIX Semaphores in Linux

    1.0 Semaphores

    Semaphores are used for process and thread synchronization. Semaphores are clubbed with message queues and shared memory under the Interprocess Communication (IPC) facilities in Unix-like systems such as Linux. There are two varieties of semaphores, the traditional

  • System V Semaphores in Linux

    1.0 Semaphores

    A semaphore is a mechanism for synchronizing processes and threads. Semaphore, in Unix-like systems, are provided under interprocess communication (IPC) facilities along with message queues and shared memory. While message queues can be used by themselves for interprocess communication, semaphores are ...

  • Semaphore Basics



    A semaphore is a signalling mechanism used to regulate access to a shared resource like a railroad track. A semaphore is used to signal to the driver of a train whether he can go ahead on the track or not. The upward ...

  • POSIX message queues in Linux

    1.0 POSIX Message queues

    POSIX interprocess comunication (IPC) was introduced in the POSIX.1b standard (IEEE Std 1003.1b-1993) for real time extensions. POSIX message queues have been made available in Linux since the version 2.6.6 (May 2004). POSIX IPC calls are as per the ...

  • System V message queues in Linux

    1.0 Message queues

    Message queues are one of the interprocess communication mechanisms available under Linux. Message queues, shared memory and semaphores are normally listed as the three interprocess communication mechanisms under Linux. Semaphores, though, are really for process synchronization. In practice, shared memory, aided ...

  • FIFOs in Linux

    1.0 FIFO

    FIFOs are pipes with a name and are also commonly referred to as named pipes. Pipes are common on Linux command lines but do not have a system-wide name. So, any two processes that wish to communicate using a pipe need to ...

  • Pipes in Linux

    1.0 Interprocess communication

    A process is an active operating system entity which executes programs. Normally, a process, like a specialist, does one particular job (well). In real life, there are complex workflows and we, often, have multiple processes collaborating to accomplish ...

  • fork and exec in Linux

    1.0 fork and exec system calls

    Suppose we wish to write a "shell program" which would execute another program. Now, in a computing system, a process executes a program. So this shell program (or, process, at run time) needs to create ...

  • Program, Process and Threads


    The definition of program is linked to the definition of algorithm. An algorithm is a sequence of finite steps which can be executed mechanically to solve a problem. The key points are that algorithms are self-contained; the steps given are sufficient to solve the problem at hand. No additional information is required. Also, ...