# Inter Process Communication This project is an implementation of Inter Process Communication using Pipes, Fifos and Shared Memory written in the C language for the Linux operating system. ## Motivation This project was built as part of the coursework for CS3003D: Operating Systems taught by the Computer Science Engineering Department, National Institute of Technology, Calicut. The aim of the project was to implement Inter process communication for the given questions using pipes, fifos and shared memory. ## Requirements vim, gvim , neovim or any text editor to implement the c code. gcc to build and compile the c code. ## Usage The steps to implement inter process communication and test it are detailed below: ## Using pipes Inter process communication using unnamed pipes method. ### Files ```c program_1.c //contains code to three processes linked using 3 pipes ``` ### Build and compile Run the following command to build and compile the program_1.c file to implement pipes. ```bash gcc program_1.c -o program -lm ``` Make sure to include math.h library header file in the c program and then use -lm command to build it. ### Run Run the program using the following command ```bash ./program_1 ``` ## Using fifo Inter process communication using named pipes method. ### Files ```bash process_1.c // writes temperature values into process 2 and reads categories from process 3 and prints the revised temperature. process2.c // reads the temperature values from process 1 calculates the average and standard deviation and writes it into process 3. process3.c // reads the average , standard deviation and temperature values from process 2 and calculates the category and writes it into process 1. ``` ### Create the fifo file Run the following command to create the fifo file in the working directory. ### Build and Compile Run the following commands to build and compile the files. ```bash gcc process_1.c -o process_1 gcc process2.c -o process2 -lm gcc process3.c -o process3 ``` ### Run Run the following commands in three separate terminals to run the 3 programs. ```bash ./process_1 ./process2 ./process3 ``` ## Using shared memory Inter process communication using shared memory method. ### Files ```bash 1_process.c // Reads the password and displays password strength 2_process.c // counts the characters 3_process.c // writes password strength ``` ### Build And Compile Run the following commands to build and compile the files. ```bash gcc 1_process.c -o 1_process gcc 2_process.c -o 2_process -lm gcc 3_process.c -o 3_process ``` ### Run Run the following commands in three separate terminals to run the 3 programs. ```bash ./1_process ./2_process ./3_process ``` ## Author Kannan Mangalathil (kannan_b180554cs@nitc.ac.in) ## License This software may be restributed and/or modified under the terms of the GNU General Public License, version 3 or later, as published by the Free Software Foundation.