Advanced Linux Programming

The design of UNIX/Linux has stood the test of time! In the words of Dennis Ritchie, inventor of C and co-inventor of UNIX, "The design of UNIX is simple, but it requires a genius to understand its simplicity!"

This course explores what Linux means to a programmer and shows how C is tied very strongly with Linux, how C programs live on devices and in memory, and how control flows through it. How C programs communicate with the kernel and get things done. How files are handled and process relationships are established. How processes communicate with each other, both within the system and outside of it on the network.

Course Benefits

Upon completion of this course, participants will be able to:
  • Understand how system calls can be made at the user space and have expectations from the kernel
  • Use the knowledge of the file model and process model in Linux to our advantage
  • Get an in-depth understanding of how C programs look like in their binary form and in memory, and how control passes when C programs run
  • Access files using low-level API and control efficiency using buffering
  • Send signals to processes, design programs to respond to signals and define process relationships
  • Make processes communicate using BSD IPC mechanisms of pipes and named pipes (FIFO)
  • Make processes communicate using SV IPC mechanisms of message queues, semaphores and shared memory
  • Make processes communicate remotely using sockets

Target Audience

  • Freshers who have to program on UNIX/Linux
  • Developers and maintainers who want a deeper understanding of how things work under the hood in Linux


  • Working knowledge of any UNIX-based operating system.
  • Knowledge of C programming

Course Duration

5 days