Advanced Linux Programming (2001)
mentorembedded.github.io
mentorembedded.github.io
Also need a 2nd edition of "Professional Linux Kernel Architecture" by Wolgang Mauerer.
I had not heard of this book at all. How does it compare with Robert Love's Linux Kernel Development?
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.
Man. Nostalgia.
Other rate-limiting strategies like slowing down a connection over time would need other "acceleration" strategies like restarting the connection when it slows down, continuing from where the previous left off.
Another possible option that isn't about circumventing rate-limiting but just speeding up downloads can be to download different chunks from different mirrors, to spread the uplink burden. Axel can be provided multiple URLs for this.
This was mostly fixed a mover 20 years ago when window scaling became default, but companies like signiant actually had demos where they deliberately turned off window scaling to show how their proprietary file transfer formats were so much faster.
Even if you weren't on dial-up, sometimes downloads would just... pause. Like you'd get to 23% and just wouldn't get any more data from the server. With these programs you could make progress by restarting the download, and it would pick up largely where it left off.
Advanced Linux Programming is just C programming!
Joke aside, you are right 'Hello World' does seem disconnected from 'Advanced'
I guess it's advanced in the sense of "not beginner". A typical beginner book might start with ls, cp, and nano and get to hello world around the midpoint.