Adde README files for each chapter folder

This commit is contained in:
Fabio Scotto di Santolo
2025-06-27 14:16:53 +02:00
parent b233d9034e
commit 17cb0bbd40
5 changed files with 139 additions and 2 deletions

42
chp4/README.md Executable file
View File

@@ -0,0 +1,42 @@
# Chapter 3 Advanced File I/O
## File Metadata and the `stat` Family
- Use `stat()`, `fstat()`, `lstat()` to retrieve file metadata:
- File type, size, inode number, permissions, ownership, timestamps (atime, mtime, ctime).
- The `stat` structure includes all these details.
## File Types
- Regular file, directory, symbolic link, character/block device, FIFO, socket.
- Use macros like `S_ISREG()`, `S_ISDIR()` to test file types.
## File Permissions and Modes
- Represented by 12 bits (e.g., `rwxr-xr--`), plus sticky/SUID/SGID bits.
- Manipulate with `chmod()`, `fchmod()`, `umask()`.
- Ownership changed with `chown()` and `fchown()`.
## Links
- **Hard links**: multiple filenames point to the same inode.
- **Symbolic links**: separate files that reference other paths; can be broken.
- Use `link()`, `unlink()`, `symlink()`, `readlink()`.
## Directories
- Open with `opendir()`, read entries with `readdir()`.
- Low-level: `getdents()` system call.
## File Timestamps
- `utime()`, `utimes()`, `futimens()`, and `utimensat()` to update access/modification times.
## File Descriptors and Flags
- Manipulate with `fcntl()`:
- Set non-blocking mode (`O_NONBLOCK`), FD_CLOEXEC flag, file locks.
- Duplicate with `dup()` and `dup2()`.
## File Locking
- `flock()` for advisory locking (whole file).
- `fcntl()` for POSIX record locking (ranges).
## Temporary Files
- `tmpfile()`, `mkstemp()` are safe methods to create temp files.
## Summary
- Chapter 3 focuses on extended file handling: metadata, links, directories, file modes, and advanced descriptor manipulation.