Linux/UNIX System Programming - Seminar / Kurs von CBT Training & Consulting GmbH

Dieser Kurs wird in englischer Sprache vom unserem Linux Experten Michael Kerrisk durchgeführt.

Inhalte

  • Course Introduction
  • Fundamental Concepts
    • System calls and library functions
    • Error handling
    • System data types
    • Notes on code examples
  • File I/O File I/O overview
    • open(), read(), write(), close()
    • The file offset and lseek()
    • Atomicity
    • Relationship between file descriptors and open files
    • Duplicating file descriptors
    • File status flags (and fcntl())
  • File I/O Buffering
    • Kernel buffering
    • User-space (stdio) buffering
    • Controlling kernel buffering
  • Files
    • Inodes
    • Retrieving file information: stat()
    • File mode
    • Changing file attributes
  • Directories and Links (*)
    • Directories and (hard) links
    • Symbolic links
    • Current working directory
    • Operating relative to a directory (openat() etc.)
    • Scanning directories
  • Processes
    • Process IDs
    • Process memory layout
    • Command-line arguments
    • The environment list
    • Process groups and
    • Nonlocal gotos
  • Process Credentials
    • Users and groups
    • Process credentials
    • Retrieving process credentials
  • Signals: Introduction
    • Signal dispositions
    • Signal handlers
    • Useful signal-related functions
    • Signal sets, the signal mask, and pending signals
  • Signals: Signal Handlers
    • Designing signal handlers
    • Async-signal-safe functions
    • Interrupted system calls
  • Signals: Further Details (*)
    • Sending signals from a program
    • SA_SIGINFO signal handlers
    • Realtime signals
  • Process Creation and Termination
    • Creating a new process: fork()
    • File descriptors and fork()
    • Process termination
    • Monitoring child processes
    • Orphans and zombies
    • The SIGCHLD signal
    • Exit handlers (*)
  • Executing Programs
    • Executing programs: execve()
    • The exec() library functions
    • File descriptors and exec()
  • System Call Tracing with strace
    • Getting started
    • Tracing child processes
    • Filtering strace output
  • Privileged Programs
    • Process credentials
    • Set-user-ID and set-group-ID programs
    • Changing process credentials
  • Threads: Introduction
    • Pthreads API basics
    • Thread creation and termination
    • Thread IDs
    • Joining and detaching threads
    • Thread attributes
    • Signals and threads
    • Threads and process control
  • Threads: Synchronization
    • Shared resources and critical sections
    • Mutexes
    • Locking and unlocking a mutex
    • Condition variables
    • Signaling and waiting on condition variables
    • Dynamically initialized mutexes
    • Dynamically initialized condition variables
    • Other synchronization primitives
  • IPC: Introduction and Overview
    • Categorizing IPC
    • Choosing an IPC mechanism
  • Pipes and FIFOs
    • Creating and using pipes
    • Connecting filters with pipes
    • FIFOs
  • Sockets: Concepts and UNIX Domain
    • Socket types and domains
    • Creating and binding a socket
    • System calls: stream sockets
    • UNIX domain stream sockets
    • System calls: datagram sockets
    • UNIX domain datagram sockets
    • Further details of UNIX domain sockets
  • Sockets: Internet Domain
    • Internet domain sockets
    • Data-representation issues
    • Loopback and wildcard addresses
    • Host addresses and port numbers
    • Host and service conversion
    • Internet domain sockets example
    • Additional sockets system calls
  • Alternative I/O Models
    • Nonblocking I/O
    • Signal-driven I/O
    • I/O multiplexing: poll()
    • Problems with poll() and select()
    • The epoll API
    • epoll events
    • epoll: edge-triggered notification
    • epoll: API quirks
    • Event-loop programming
  • POSIX IPC Overview
  • POSIX Semaphores
    • Named semaphores
    • Semaphore operations
    • Synchronizing access to a shared resource
    • Unnamed semaphores
  • POSIX Shared Memory
    • Creating & opening SHM objects
    • Using SHM objects
    • Synchronizing access to SHM
  • POSIX Message Queues (*)
    • Opening, closing, and unlinking a message queue
    • Message queue attributes
    • Sending and receiving messages
    • The mqueue filesystem
    • Message queue limits and defaults
    • Message notification via a signal
    • Message notification via a thread
  • Daemons (*)
    • Creating a daemon
    • Reinitializing a daemon
  • Time (*)
    • Calendar time
    • Elapsed time
    • Process time
  • Timers and Sleeping (*)
    • Historic timer APIs
    • POSIX timers
    • POSIX timers: notification
    • POSIX timers: timer overruns
    • Sleeping

Topics marked with an asterisk (*) are optional, and will be covered as time permits

Lernziele

This course provides a deep understanding of the operating system architecture and low-level interfaces required to build system-level applications on Linux and UNIX systems ranging from embedded processors to enterprise servers. Detailed presentations coupled with many carefully designed practical exercises provide participants with the knowledge needed to write complex system, network, and multithreaded applications. The course dives into many specifics of the Linux system, but makes careful and frequent reference to the POSIX standard, so that it is also valuable to developers working on other UNIX systems.

SG-Seminar-Nr.: 5275443

Preis jetzt anfragen

Seminar merken ›

Semigator berücksichtigt

  • Frühbucher-Preise
  • Last-Minute-Preise
  • Gruppenkonditionen

und verfügt über Sonderkonditionen mit einigen Anbietern.

Der Anbieter ist für den Inhalt verantwortlich.

Nicht das gesuchte Seminar?

Über Semigator mehr erfahren

  • Anbietervergleich von über 1.500 Seminaranbietern
  • Vollständige Veranstaltungsinformationen
  • Schnellbuchung
  • Persönlicher Service