6 ms·
"FIRST EDITION: June, 2001" I wonder how much of it is still relevant; if memory serves, the kernel advanced through at least 4 major versions since then.
by squarefoot 4y ago
"FIRST EDITION: June, 2001"
I wonder how much of it is still relevant; if memory serves, the kernel advanced through at least 4 major versions since then.
- Klasiaster 4y agoThe part about /proc contains things such as /proc/pci or /proc/ide that don't exist anymore (it's not a stable interface like /sys).
- ww520 4y agoIt's talking about the user mode application development. The Linux system API doesn't change much. May be the newer stuff like io_uring appears recently. 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.
- MichaelMoser123 4y ago> The Linux system API doesn't change much 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 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.
- ww520 4y agoThe old Linux system api has not been changed much. It’s still pretty much the same. The new addition doesn’t obsolete the old stuff. That’s why the book is still relevant.
- MichaelMoser123 4y agosystem calls don't change, however glibc does deprecate and remove features, occasionally. See: https://abi-laboratory.pro/?view=timeline&l=glibc https://abi-laboratory.pro/?view=timeline&l=glibc Correction: https://manpages.debian.org/testing/manpages-dev/syscalls.2.en.html 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.
- gjvc 4y agoYou are correct. A good but perhaps small example which bit me this week is inotify; I could not build this tool https://github.com/mikesart/inotify-info https://github.com/mikesart/inotify-info on CentOS 7 (at work) because it's only on version 3.x of the kernel and is missing the statx(2) system call which was added in 4.11. The rate of change may be slow, but the kernel is a huge thing, so it's not entirely surprising these situations arise.
- criddell 4y agoThat’s all in the process of changing now, isn’t it? I would imagine the days of the kernel granting access to things like your microphone or email or photos using static user and file permissions are pretty much coming to an end.
- jcranmer 4y agoSkimming through the text, the section on devices needs an update (IDE ain't really a thing anymore), and there's several places where the examples or prose could use updating to refer to modern systems. Appendix A (on other development tools) is... hilariously out of date. Doesn't even mention valgrind, although it's understandable that it wouldn't mention ASAN or perf (invented years after the book came out). 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.