Home About Courses Schedule Services Webinars Contact Search

Programming in the Linux Environment

SEE SCHEDULE

Duration: 5 Days

Method: Instructor led, Hands-on workshops

Price: $2750.00

Course Code: LI1024


Audience

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).

Description

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.

Objectives

Upon successful completion of this course, the student will be able to:

  • Write application code in the C language that conforms to published Linux programming standards.

Prerequisites

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)

Topics

  • I. Overview of Programming on Linux (tools and techniques)
  • II. Linux Programming Standards
  • III. 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
  • IV. 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)
  • V. Packaging and Deployment
    • Building Custom RPM and Deb Packages
    • Converting Between Package Types Using alien
    • Kernel Compilation (why and how)