I wonder how much of it is still relevant; if memory serves, the kernel advanced through at least 4 major versions since then.
I wonder how much of it is still relevant; if memory serves, the kernel advanced through at least 4 major versions since then.
I have the Advanced Unix Programming book. From looking at the copyright, it first started from 1985. It talks about programming on io/file/process/ipc/signal/device/terminal/security/permission/etc. It's still relevant today.
really? they added epoll, aio (they later added io_uring as a better aio), ebpf. Real threads were added with clone(2). Routing changed from ipchains to iptables. They added all the stuff needed for containers: cgroups, namespaces and what else - the Linux system API saw lots of action.
Look here: lots of additions came since Linux 2.2 https://man7.org/linux/man-pages/man2/syscalls.2.html
They even added sysfs, as procfs is now regarded as 'old and cluttered'
Also lots of changes in glibc.
https://abi-laboratory.pro/?view=timeline&l=glibc
Correction: https://manpages.debian.org/testing/manpages-dev/syscalls.2.... is listing some system calls as removed. I didn't know that. Strange things happen at sea.
Also: things did disappear from procfs.
As for missing stuff, the I/O stuff doesn't even reach select, much less epoll or io_uring (which any modern "advanced" Linux programming really should cover). And you'd also likely need to cover cgroups and namespaces (the building blocks for containers, if not just containers themselves). It probably would be worth covering bpf and seccomp as well.
But then again, from my first skim, this book doesn't merit the adjective "Advanced" in the first place, even in the timeframe it was first written. There's not even much discussion of Linux-specific features (as opposed to things found in POSIX) that I would have assumed a book titled "Linux Programming" written in 2001 would have covered.