When you enroll through our links, we may earn a small commission—at no extra cost to you. This helps keep our platform free and inspires us to add more value.

Udemy logo

Linux Inter Process Communication (IPC) from Scratch in C

Linux Course - Includes Socket Programming, Linux System Programming, C programming - From Beginner to Expert

     
  • 4.7
  •  |
  • Reviews ( 1.4K )
₹559

This Course Includes

  • iconudemy
  • icon4.7 (1.4K reviews )
  • icon8h 40m
  • iconenglish
  • iconOnline - Self Paced
  • iconprofessional certificate
  • iconUdemy

About Linux Inter Process Communication (IPC) from Scratch in C

About

This Course is about learning

How Linux Processes Talk to each Other.

This is a sub-domain of Linux System Programming. We shall explore various popular mechanism used in the industry through which Linux processes to exchange data with each other. We will go through the concepts in detail behind each IPC mechanism, discuss the implementation, and design and analyze the situation where the given IPC is preferred over others. We also discuss how applications should be designed to use IPC facilities provided by underlying Linux OS. You will have Assignments wherever possible, and throughout the course, there shall be one project in which you shall be incrementally applying the new IPC technique you have learned. Towards the end of the course, you would have practiced and applied all IPC techniques learned in this course. Each IPC mechanism, we will have a detailed code walk in which I show you how actually a given IPC mechanism is implemented on sending and receiving side. When you would join the industry, from day 1 you will witness IPC concepts being applied all over the software in order to facilitate communication between different parts of the software.

Who should do this course ?

This course is meant for

UG Computer science students, job seekers, and professional developers.

This is a

MUST

do course for those who want to join MNCs as a developer in System Programming. In System Programming, almost all the time you have to use IPC to carry out data exchange between processes, therefore students graduating in computer science and looking to seek an opportunity in MNCs as a developer should have IPC concepts at his/her fingertips.

Pre-requisite

It shall be advantageous if you know a little about

C and OS.

We designed this course assuming the student is a complete beginner in Linux IPC and we raise the level of course gradually as we move from Basic to advance concepts wherever necessary.

Also, please just do not sit and watch my codes. Write your own codes, even if it is the same as mine!

Related Courses

RPC (Remote Procedure Calls)

is another way of carrying out _Inter-Process Communication_ between two processes running on separate machines in the network. You may also want to check my other course on

Linux RPCs

where you will learn how to implement RPCs from scratch.

Programming Language used In this course :

We have strong reasons to choose C as a language for this course:

IPC is a facility provided by the OS to developers to carry out data exchange between processes. Learning IPC using C helps you understand what is going on behind the scenes. C language really exposes the low-level details about how the system actually works. In System programming, C is the only language to be used and there is not even a remote substitute of this language when it comes to System programming.

No Third-Party libraries

Whatever logic you implement, you need to implement it from scratch. This course does not suggest taking the help of any third party library to get the jobs done. Use of external libraries completely defeats the purpose of the course. However, it is recommended to use third-party libraries for commonly used data structures such as linked lists/Trees/Queues, etc which saves a lot of time implementing these data structures.

_Note1 :_

_Though we use Linux to teach the IPC techniques, conceptually, IPC of Linux is not very different from other OS platforms such as windows, iOS, etc. So, if you are a programmer for other platforms, this course still holds great value for you._

Note2 :

This Course talks about various techniques regarding exchanging data between processes, the other related topics such as process synchronization and locking is out of the scope of this course and will be covered separately.

Warning: This course has auto system-generated subtitles which may not be perfect. Please disable subtitles as per your convenience.

Curriculum

Introduction

Table of Contents

Computer Architecture - Overview

Various IPC Techniques

Communication Types

IPC Technique 1 - Unix Domain Sockets

Socket API Introduction

Socket Message Types

Socket Design Paradigm

Accept System Call

Introducing Unix Domain Socket

Unix Domain Socket Server Implementation

Unix Domain Socket Client Implementation

Multiplexing

Select System Call

Multiplexing Server State machine

Multiplexed Server Implementation

Data Synchronization - IPC Project part 1

IPC Technique 2 - Message Queue

Introduction

MsgQ as a Kernel Resource

Open & Create a MsgQ

Closing a MsgQ

Enque Data in MsgQ

Dequeue Data from MsgQ

Unlinking a MsgQ

Using a Msg Q - Design perspective

Bi-Directional Communication

Code Walk - Implementation

Demonstration

IPC Technique 3 - Shared Memory

Overall Design Goals

Concept of Virtual Memory

Program Control Block

Shared Memory Basics

Kernel Memory

mmap() - Memory Mapping

Design Constraint

Shared Memory related APIs

Data Synchronization - IPC Project part 2

IPC Technique 4 - Signals

Introduction

Linux Well knows Signals

Signals Generation and Trapping

Sending Signals using Kill()

Data Synchronization - IPC Project part 3

IPC Technique 5 - Network sockets

Socket Programming Design

Select System call

Accept System call

Concept of Multiplexing

Server State machine

Project on Socket Programming - IPC Project 4

Multiplexing on Different IPCs

Use select() to multiplex on different IPC interfaces

What You Will Learn?

  • You will be able to Design Application which require IPC .
  • Choose the best IPC mechanism depending on the application requirement .
  • Understand the Linux IPC programming interface .
  • Understand Linux OS better and feel confident .
  • Prepare for IPC based interview Questions .
  • Design a Linux process which could harness benefits of various IPC Mechanism at the same time.