EEC Logo

Programming in the Linux Environment

Duration: 5 days


Experienced C programmers who have worked on Unix/Linux systems in the past and are interested in developing or porting applications to the Linux environment. This course is available for the Red Hat and SUSE distributions, but a variety of customized topics are available for other distributions as well (primarily Debian-based).

Course Contents

  1. Overview of Programming on Linux (tools and techniques)

  2. Linux Programming Standards

  3. Command Line Tools

    1. Shell Scripting with a Focus on Programming Tasks

    2. Configuration Management and Version Control (Subversion, Git, others)

    3. Overview of Compiling, Linking, and Debugging (gcc and ddd)

    4. Automating Builds Using make (includes an overview of imake)

    5. Overview of lex and yacc

  4. Operating System APIs

    1. Process Lifecycle and Management (including capability management)

    2. Virtual Filesystem API

      1. Writing to the POSIX standard (for portability)

      2. Writing to the Linux kernel API (for feature set)

    3. Filesystem Services (directory lookup, FAM, filesystem statistics)

    4. Multi-threaded Applications (including the futex implementation)

    5. Signal Handling

    6. System V Interprocess Communication (shared memory, semaphores, message queues)

    7. Named and Unnamed Pipes

    8. Socket Programming (including multicasting)

    9. Asynchronous I/O

    10. Overview of the PTY Implementation

    11. Overview of the POSIX threads API (the pthreads library)

  5. Packaging and Deployment

    1. Building Custom RPM and Deb Packages

    2. Converting Between Package Types Using alien

    3. Kernel Compilation (why and how)

Course Objectives

Upon completion of this course, the student will be able to write application code in the C language that conforms to published Linux programming standards.

Instructional Technique

Students are invited to bring their current ideas and questions to the classroom for discussion. Case studies, lecture, group problem solving, and online laboratories will be used.


You can find detailed classroom equipment requirements in the classroom setup guide. The largest value is obtained when the student has been working as a C programmer for at least one year. Students who consider themselves "rusty" in their C skills should refresh those skills first.