text: - Program to generate a random password in C
  1.0 Introduction
  We need passwords to login to our accounts. These password must be unbreakable. One way to make a password strong is to make it random. Here is a program in C language which can be used to generate a random password offline. The program asks the user to enter the number of characters required ...
  - C Programming Tutorial 5: Structures and Unions
  - C Programming Tutorial 4: Pointers and Arrays
  - 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 ...
  - 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 ...
  - 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. ...
  - 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 ...
  - POSIX real-time signals in Linux
  - 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 ...
  - 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 ...
  - 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
  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
  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. Datagram sockets support ...
  - Socket Programming using TCP in C
  1.0 Client-server model
  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 clients over the ...
  - Signals in Linux
  1.0 Signals
  A signal is a notification delivered to a process by the kernel. A signal indicates that an event has occurred and the process must take note of it. Signals are mostly delivered asynchronously to a process. Whatever the process was doing is suspended and the ...
  - 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 of the wire ...
  - ...
  - 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 the kernel and ...
  - 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 to get a ...
  - 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 to synchronize their ...
  - POSIX Threads Programming in C
  - 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 ...
  - 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 needed for implementing ...
  - Semaphore Basics
  1.0 BACKGROUND
  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 standard but may ...
  - 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 by semaphores, makes ...
  - 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 be related, either ...
  - 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 certain objectives. In ...
  - fork and exec system calls in Linux
  - Program, Process and Threads
  PROGRAM, ...