Advanced Red Hat Linux Systems Programming Course Description This course introduces the participants to system level programming in the C language in a RHEL5 environment. The course focuses on RHEL5 system calls and library functions, how to use them, and their underlying mechanisms. The course deals with many facets of the RHEL5 operating system, including: introduction to RHEL5 kernel structure, I/O, Signals, Signal handlers, Timers, Processes, Multi-Tasking, Inter-Process Communication (IPC) Pipes, Shared memory, Message Queues, Semaphores, Networking, Sockets, using TCP/IP and UDP/IP.Throughout the course the information presented is related to the participant through: the execution of common RHEL5 user/administrator commands, and writing, compiling, and executing example C language programs which demonstrate the use of system routines and accessing system data structures on a live RHEL5 system. Course Objectives Upon completion of this course the participant will be able to: • Explain the programmable mechanisms in a RHEL5 environment • Write applications using standard RHEL5 system calls and library functions Course Topics System Programming Environment of the RHEL5 Environment of a C language program System level programming requirements: C compiler issues Header files and libraries Special data types used Useful functions Error handling (basic) Documentation Security Issues File Systems Types of file I/O File I/O structures File I/O access types Dealing with STDIN, STDOUT, STDERR Creating and using temporary files Directory file access and manipulation Permissions Process Creation and Control Attributes (username, UID, PID, Groups) Creation methods Multi-tasking Shells Synchronization An introduction to threads Synchronization and System Information Time issues: how time is maintained timers General synchronization semaphores mutexes signals (generation and handling) System information: uname hostname load averages Interprocess Data Communication Facilities Overview of RHEL5 IPC Facilities Memory Mapped files Pipes and Named Pipes Messages Queues Creating and Using Shared Memory structures Sharing Code Between Processes Building shared object (libraries) Static Linking Dynamic Linking Networking Concepts and basic requirements Socket creation and usage TCP/IP level connections UDP/IP level connections Course Duration This course normally requires five (5) days, 60% lecture, 40% hands on lab exercises. Course Prerequisites It is assumed that the participant has a solid background in basic RHEL5 utilities and editors (such as vi), and a working knowledge of the C (or C++) programming language(s). |