![]() |
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).
Overview of Programming on Linux (tools and techniques)
Linux Programming Standards
Command Line Tools
Shell Scripting with a Focus on Programming Tasks
Configuration Management and Version Control (Subversion, Git, others)
Overview of Compiling, Linking, and Debugging (gcc
and ddd
)
Automating Builds Using make
(includes an overview of imake
)
Overview of lex
and yacc
Operating System APIs
Process Lifecycle and Management (including capability management)
Virtual Filesystem API
Writing to the POSIX standard (for portability)
Writing to the Linux kernel API (for feature set)
Filesystem Services (directory lookup, FAM, filesystem statistics)
Multi-threaded Applications (including the futex implementation)
Signal Handling
System V Interprocess Communication (shared memory, semaphores, message queues)
Named and Unnamed Pipes
Socket Programming (including multicasting)
Asynchronous I/O
Overview of the PTY Implementation
Overview of the POSIX threads API (the pthreads
library)
Packaging and Deployment
Building Custom RPM and Deb Packages
Converting Between Package Types Using alien
Kernel Compilation (why and how)
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.
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.
Experience in C programming (preferably six months or more)
Familiarity with Linux commands and directory structure
Experience with the vi
or emacs
text editor
Understanding of basic shell usage for Unix/Linux (wildcards, I/O redirection)