Programming Linux
Quick search
Navigation
Courses
Courses Overview
Slide Material
Python Programming
The C Programming Language
C++: TODO List
C++: Miscellaneous Live-Hacking
C++
The New C++ (11-…)
Design Patterns With C++
C++ Code
C++ Exercises
CMake
Linux
Linux Basics
SSH: Secure Shell
Toolchain, And Cross Development
Linux Systems Programming
Introductory Live Hacking, Hardware-Wise (
sysfs
GPIO)
Linux Systems Programming: Basics
File I/O
Blocking I/O: What Is That?
Processes
POSIX Threads
Scheduling
Sysprog: Events
Sysprog: POSIX IPC
Sysprog: Signals
mmap
POSIX Message Queues
Linux Hardware Interfaces
Drafts
Is Software A Craft? Software Is A Craft! ⟶
Clean Code
Unit Testing With
googletest
Linux Kernel Driver Development
Generated Topic Graph
How To Book
Log Of Past Courses
About
Myself: Contact, Impressum, …
This Site
Blog
Posts
Linux Systems Programming
¶
Contents
Dependencies
Contents
¶
Introductory Live Hacking, Hardware-Wise (
sysfs
GPIO)
Linux Systems Programming: Basics
File I/O
Blocking I/O: What Is That?
Processes
POSIX Threads
Scheduling
Sysprog: Events
Sysprog: POSIX IPC
Sysprog: Signals
mmap
POSIX Message Queues
Dependencies
¶
cluster_linux
Linux
cluster_linux_sysprog
Linux Systems Programming
cluster_linux_sysprog_fileio
File I/O
cluster_linux_sysprog_intro_hw
Introductory Live Hacking, Hardware-Wise (sysfs GPIO)
cluster_linux_sysprog_blocking_io
Blocking I/O: What Is That?
cluster_linux_sysprog_posix_threads
POSIX Threads
cluster_linux_sysprog_basics
Linux Systems Programming: Basics
cluster_linux_sysprog_process
Processes
cluster_linux_sysprog_scheduling
Scheduling
cluster_linux_basics
Linux Basics
cluster_linux_basics_shell
The Shell (Bash - “Bourne Again Shell”)
cluster_linux_basics_intro
Introduction: Concepts and Terminology
cluster_linux_basics_permissions
File System Permissions
cluster_linux_toolchain
Toolchain, And Cross Development
linux_sysprog_events
Sysprog: Events
linux_sysprog_signals
Sysprog: Signals
linux_sysprog_ipc
Sysprog: POSIX IPC
linux_sysprog_fileio_example_O_RDONLY
O_RDONLY: Reading a File
linux_sysprog_fileio_basics
File I/O: Basics
linux_sysprog_fileio_example_O_RDONLY->linux_sysprog_fileio_basics
linux_basics_permissions_basics
Permissions: Mode, User and Group Ownership
linux_sysprog_fileio_example_O_RDONLY->linux_basics_permissions_basics
linux_sysprog_fileio_duplicate
Duplicating (Whats Going On?)
linux_sysprog_fileio_duplicate->linux_sysprog_fileio_basics
linux_sysprog_fileio_basics_exercise_hole
Exercise: Create File With Hole
linux_sysprog_fileio_basics_exercise_hole->linux_sysprog_fileio_basics
linux_sysprog_fileio_fileio_group
File I/O
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_example_O_RDONLY
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_duplicate
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_basics_exercise_hole
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_basics
linux_sysprog_fileio_misc
Miscellaneous
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_misc
linux_sysprog_fileio_example_O_WRONLY
O_WRONLY: Writing A File (Which Must Exist)
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_example_O_WRONLY
linux_sysprog_fileio_basics_exercise_copy
Exercise: Copy A File
linux_sysprog_fileio_fileio_group->linux_sysprog_fileio_basics_exercise_copy
linux_sysprog_fileio_example_O_CREAT
O_CREAT: Creating A File
linux_sysprog_fileio_example_O_CREAT->linux_sysprog_fileio_basics
linux_sysprog_fileio_example_O_CREAT->linux_sysprog_fileio_example_O_WRONLY
linux_sysprog_fileio_example_O_CREAT->linux_basics_permissions_basics
linux_sysprog_basics_groupnode
Linux Systems Programming: Basics
linux_sysprog_fileio_basics->linux_sysprog_basics_groupnode
linux_sysprog_fileio_basics->linux_basics_permissions_basics
linux_sysprog_fileio_misc->linux_sysprog_fileio_basics
linux_sysprog_fileio_example_O_WRONLY->linux_sysprog_fileio_example_O_RDONLY
linux_sysprog_fileio_example_O_WRONLY->linux_sysprog_fileio_basics
linux_sysprog_fileio_example_O_WRONLY->linux_basics_permissions_basics
linux_sysprog_fileio_basics_exercise_copy->linux_sysprog_fileio_basics
linux_sysprog_basics_errorhandling
Error Handling
linux_sysprog_fileio_basics_exercise_copy->linux_sysprog_basics_errorhandling
linux_sysprog_fileio_basics_exercise_copy->linux_basics_permissions_basics
linux_sysprog_fileio_exercise_w1_sensor
Exercise: Read Temperature From Onewire Sensor
linux_sysprog_fileio_exercise_w1_sensor->linux_sysprog_fileio_basics
linux_sysprog_fileio_exercise_w1_sensor->linux_sysprog_basics_errorhandling
linux_sysprog_fileio_exercise_w1_sensor->linux_basics_permissions_basics
linux_sysprog_fileio_example_O_EXCL
O_EXCL: Creating A File, But Failing If It Already Exists
linux_sysprog_fileio_example_O_EXCL->linux_sysprog_fileio_example_O_CREAT
linux_sysprog_fileio_example_O_EXCL->linux_sysprog_fileio_basics
linux_sysprog_fileio_example_O_EXCL->linux_basics_permissions_basics
linux_sysprog_intro_hw_watch
Interrupts In Userspace
linux_sysprog_intro_hw_sysfs_gpio
Intro: sysfs GPIO
linux_sysprog_intro_hw_watch->linux_sysprog_intro_hw_sysfs_gpio
linux_sysprog_intro_hw_get
Get Value Of GPIO
linux_sysprog_intro_hw_watch->linux_sysprog_intro_hw_get
linux_sysprog_intro_hw_get->linux_sysprog_intro_hw_sysfs_gpio
linux_sysprog_blocking_io_blocking_io_file
Blocking I/O (On A File): What is That?
linux_sysprog_blocking_io_blocking_io
Blocking I/O: What is That? (“Everything is a file”)
linux_sysprog_blocking_io_blocking_io_file->linux_sysprog_blocking_io_blocking_io
linux_sysprog_blocking_io_blocking_io->linux_sysprog_fileio_basics
linux_sysprog_blocking_io_blocking_io_timer
Blocking I/O: On A Timer? WTF?
linux_sysprog_blocking_io_blocking_io_timer->linux_sysprog_fileio_basics
linux_sysprog_blocking_io_blocking_io_timer->linux_sysprog_blocking_io_blocking_io
linux_sysprog_blocking_io_blocking_io_network
Blocking I/O: On A Network Socket
linux_sysprog_blocking_io_blocking_io_network->linux_sysprog_fileio_basics
linux_sysprog_blocking_io_blocking_io_network->linux_sysprog_blocking_io_blocking_io
linux_sysprog_posix_threads_exercise_mutex
Mutex: Solve Load/Modify/Store Conflict
linux_sysprog_posix_threads_mutex
Synchronization
linux_sysprog_posix_threads_exercise_mutex->linux_sysprog_posix_threads_mutex
linux_sysprog_posix_threads_lifecycle
Thread Life Cycle
linux_sysprog_posix_threads_basics
Basics
linux_sysprog_posix_threads_lifecycle->linux_sysprog_posix_threads_basics
linux_sysprog_posix_threads_miscellaneous
Miscellaneous
linux_sysprog_posix_threads_exercise_condition_variable
Condition Variable: Message Queue
linux_sysprog_posix_threads_miscellaneous->linux_sysprog_posix_threads_exercise_condition_variable
linux_sysprog_posix_threads_condition_variable
Communication: Condition Variable
linux_sysprog_posix_threads_exercise_condition_variable->linux_sysprog_posix_threads_condition_variable
linux_sysprog_posix_threads_condition_variable->linux_sysprog_posix_threads_exercise_mutex
linux_sysprog_scheduling_basics
Scheduling (and Multitasking)
linux_sysprog_posix_threads_basics->linux_sysprog_scheduling_basics
linux_sysprog_posix_threads_mutex_trylock
Trylock/islocked
linux_sysprog_posix_threads_mutex_trylock->linux_sysprog_posix_threads_mutex
linux_sysprog_posix_threads_last_warning
Last Warning
linux_sysprog_posix_threads_last_warning->linux_sysprog_posix_threads_miscellaneous
linux_sysprog_posix_threads_exercise_pthcreate_racecondition
Thread Creation, Race Condition
linux_sysprog_posix_threads_mutex->linux_sysprog_posix_threads_exercise_pthcreate_racecondition
linux_sysprog_posix_threads_exercise_pthcreate_racecondition->linux_sysprog_posix_threads_lifecycle
linux_sysprog_basics_groupnode->linux_sysprog_basics_errorhandling
linux_sysprog_basics_syscalls
System Calls vs. Library Functions
linux_sysprog_basics_groupnode->linux_sysprog_basics_syscalls
linux_sysprog_basics_errorhandling->linux_sysprog_basics_syscalls
linux_toolchain_basics
Toolchain: Basics
linux_sysprog_basics_syscalls->linux_toolchain_basics
linux_sysprog_process_tree
The Process Tree (And Environment, And procfs)
linux_sysprog_process_commandline
Process: Arguments, Exit Status
linux_sysprog_process_tree->linux_sysprog_process_commandline
linux_basics_intro_process_tree
Process Hierarchy (Parent, Child Process)
linux_sysprog_process_tree->linux_basics_intro_process_tree
linux_basics_intro_environment
Environment (Variables)
linux_sysprog_process_tree->linux_basics_intro_environment
linux_basics_intro_process
Processes, Scheduling, Address Spaces
linux_sysprog_process_tree->linux_basics_intro_process
linux_sysprog_process_commandline->linux_basics_intro_process
linux_sysprog_scheduling_realtime
Realtime
linux_sysprog_scheduling_realtime->linux_sysprog_blocking_io_blocking_io
linux_sysprog_scheduling_wakeup_latency
Wakeup Latency, CPU Frequency (Gotcha)
linux_sysprog_scheduling_realtime->linux_sysprog_scheduling_wakeup_latency
linux_sysprog_scheduling_realtime_api
Realtime API
linux_sysprog_scheduling_realtime_api->linux_sysprog_posix_threads_lifecycle
linux_sysprog_scheduling_realtime_api->linux_sysprog_posix_threads_mutex
linux_sysprog_scheduling_realtime_api->linux_sysprog_scheduling_realtime
linux_sysprog_scheduling_processes_and_threads
Tasks? Processes? Threads?
linux_sysprog_scheduling_processes_and_threads->linux_sysprog_scheduling_basics
linux_sysprog_scheduling_wakeup_latency->linux_sysprog_blocking_io_blocking_io
linux_sysprog_scheduling_wakeup_latency->linux_sysprog_scheduling_basics
linux_sysprog_scheduling_basics->linux_sysprog_blocking_io_blocking_io
linux_sysprog_scheduling_exam_questions
Scheduling: Exam Questions
linux_sysprog_scheduling_exam_questions->linux_sysprog_scheduling_realtime
linux_sysprog_scheduling_exam_questions->linux_sysprog_scheduling_processes_and_threads
linux_sysprog_scheduling_exam_questions->linux_sysprog_scheduling_wakeup_latency
linux_basics_shell_special_paths
Special Paths
linux_basics_shell_paths
Absolute and Relative Paths
linux_basics_shell_special_paths->linux_basics_shell_paths
linux_basics_shell_cwd
Current Working Directory
linux_basics_shell_cwd->linux_basics_shell_paths
linux_basics_shell_commandline
Commandline
linux_basics_shell_cwd->linux_basics_shell_commandline
linux_basics_shell_cwd->linux_basics_intro_process
linux_basics_shell_paths->linux_basics_shell_commandline
linux_basics_shell_ls
Directory Listings: The ls Command
linux_basics_shell_ls->linux_basics_shell_special_paths
linux_basics_shell_ls->linux_basics_shell_cwd
linux_basics_shell_ls->linux_basics_shell_paths
linux_basics_intro_overview
Overview
linux_basics_shell_ls->linux_basics_intro_overview
linux_basics_shell_commandline->linux_basics_intro_overview
linux_basics_shell_file_dir_create_rm
Creating And Removing Files and Directories
linux_basics_shell_file_dir_create_rm->linux_basics_shell_cwd
linux_basics_shell_file_dir_create_rm->linux_basics_shell_paths
linux_basics_intro_process_tree->linux_basics_intro_process
linux_basics_intro_environment->linux_basics_intro_process
linux_basics_intro_process->linux_basics_intro_overview
linux_basics_permissions_basics->linux_basics_shell_ls
linux_toolchain_basics->linux_basics_shell_file_dir_create_rm