Linux Inter Process Communication (IPC) from Scratch in C
Giao Tiếp Liên Tiến Trình (IPC) trên Linux từ Cơ Bản bằng C
Bạn sẽ học được gì
Yêu cầu
Đối tượng phù hợp
Nội dung khóa học
Giới thiệu khóa họ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
-
Khóa học liên quan
Khám phá thêm các khoá học cùng chủ đề
Lập trình C nhúng cho Vi điều khiển: Dành cho người mới bắt đầu tuyệt đối
FastBit Embedded Brain Academy
Khóa học Lập trình C Nâng cao
Tim Buchalka's Learn Programming Academy
Xây Dựng Phần Mềm Độc Hại Không Bị Phát Hiện Bằng Ngôn Ngữ C: Hacking Đạo Đức
Aleksa Tamburkovski
Làm chủ Vi điều khiển: Timer, PWM, CAN, Chế độ tiết kiệm năng lượng (MCU2)
FastBit Embedded Brain Academy
Lập trình Hệ thống Nhúng trên Bộ xử lý ARM Cortex-M3/M4
FastBit Embedded Brain Academy
Embedded Linux Từng Bước Sử Dụng Beaglebone Black
FastBit Embedded Brain Academy
Hướng dẫn Cơ bản về Lập trình C Nâng cao cho Linux
dr Jonas Birch, C programming ninja
Khóa học Linux toàn diện để chinh phục công việc IT mơ ước năm 2026
Imran Afzal
TỔNG QUAN: Khóa học CompTIA A+ Core 1 (220-1201) + Bài thi Thực hành
Total Seminars Over 1 Million Enrollments
Học Linux trong 5 Ngày và Thăng Tiến Sự Nghiệp
Jason Cannon
Khóa Học Đầy Đủ & Bài Thi Thực Hành CompTIA A+ Core 1 (220-1201)
Jason Dion • 2.8 Million+ Enrollments Worldwide
TRỌN BỘ: Khóa học CompTIA A+ Core 2 (220-1202) + Bài thi thực hành
Total Seminars Over 1 Million Enrollments
Thành Thạo Linux: Làm Chủ Dòng Lệnh Linux Chỉ Trong 11.5 Giờ
Ziyad Yehia
Khóa Học Cấp Tốc Quản Trị Linux: Từ Cơ Bản Đến Nâng Cao
Jason Cannon
Khóa học Lập trình C Nâng cao
Tim Buchalka's Learn Programming Academy
Học Rust Thông Qua Việc Xây Dựng Ứng Dụng Thực Tế
Lyubomir Gavadinov
Khóa Học Cấp Tốc Lập Trình Rust - 100 Dự Án Trong 100 Ngày
School of AI
Khóa học Lập trình Rust: Từ Cơ bản đến Chuyên gia 2.0
Nouman Azam