Software Engineering

Chapter 3 File I/O

Comprehensive guide to file input/output operations in Unix/Linux systems covering fundamental concepts including file descriptors, atomic operations, buffering mechanisms, direct I/O, memory mapping, and advanced file sharing techniques with practical examples and performance considerations.

January 26, 2026

Chapter 4: Files and Directories

Comprehensive guide to file and directory operations in Unix/Linux systems. Covers essential functions like stat, fstat, fstatat, and lstat for retrieving file information, different file types including regular files, directories, special files, FIFOs, sockets, and symbolic links. Explains filesystem structure with inodes, data blocks, and directory entries, plus linking mechanisms and their limitations.

January 26, 2026

Ch 5 Standard I/O stdio.h

Learn about standard I/O operations in C programming with stdio.h library. This comprehensive guide covers buffering strategies, stream orientation, formatted I/O functions, temporary files, and memory streams for optimized file handling.

January 26, 2026

Ch 7 Process Environment

Comprehensive guide to process environment in C programming, covering program startup, termination methods, exit functions, environment variables, memory layout, storage allocation, and non-local jumps with setjmp/longjmp. Essential knowledge for system programming and process management.

January 26, 2026

Ch 8 Process Control

Comprehensive guide to process control in Unix systems covering process IDs, fork system calls, process termination, and execution management. Learn about unique PID assignment, parent-child relationships, shared file descriptors, and process synchronization techniques essential for system programming.

January 26, 2026

Ch 9 Process Relationships

Learn about terminal login processes, process groups, sessions, and job control in Unix/Linux systems. This chapter covers how terminals handle user authentication, process group management, session creation, and signal-based job control mechanisms.

January 26, 2026

Chapter 10: Signals

Signals provide an asynchronous method for handling events in Unix-like systems. This technical guide covers signal fundamentals including signal naming conventions, generation conditions, and three primary handling methods: ignoring, catching, and default system actions. Learn about signal processing mechanisms, system call interruption, multiple signal handling, signal sets, and practical applications including the abort function.

January 26, 2026

Ch 11 Threads

Comprehensive guide to POSIX thread programming including thread creation, termination, and synchronization mechanisms. Covers pthread_create, thread lifecycle management, mutexes, condition variables, and other essential threading concepts for concurrent programming.

January 26, 2026

Ch 12 Thread Control

Comprehensive guide to thread control in Linux systems covering thread limits, states, reentrancy, thread-specific data, and thread-IO operations. Learn about system constraints, thread synchronization challenges, and best practices for multi-threaded programming including fork() behavior with threads and atomic file operations.

January 26, 2026

Ch 13 Daemon Processes

Learn about daemon processes - long-running processes that typically start during system boot and terminate only when the system shuts down. This guide covers common Linux daemons, error logging mechanisms, singleton daemon implementation, and daemon programming conventions.

January 26, 2026