7 ms·
Advanced Linux Programming (2001)
- yobid20 4y agoThis book is 22 years old.
- sine_break 4y agoDirect link to PDF: https://mentorembedded.github.io/advancedlinuxprogramming/alp-folder/advanced-linux-programming.pdf https://mentorembedded.github.io/advancedlinuxprogramming/al...
- 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.
- galacticaactual 4y ago> Do not use a download accelerator to download these files. Man. Nostalgia.
- endorphine 4y agoI have vague memories of this term. What were those?
- deleted 4y ago[deleted]
- Manjuuu 4y agoA http/ftp download application that split files in multiple chunks to circumvent file-level download speed cap on server side.
- jolmg 4y agoSoftware that circumvents rate-limiting. Axel (still available in Archlinux repos at least) can be told to use some number of connections, it'll figure out the size of what you want to download, divide it into the number of connections you want, and start the connections in parallel, each getting a different chunk. Works when the rate limiting is per connection. 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.
- pc2g4d 4y agoI would love to see something like this but for recent kernels, and with notes on compatibility in other OSes
- e____g 4y ago(2001)
- deleted 4y ago[deleted]
- Manjuuu 4y agoWe need a second edition of this: https://en.wikipedia.org/wiki/The_Linux_Programming_Interface https://en.wikipedia.org/wiki/The_Linux_Programming_Interfac...
- d-z-m 4y agoPurchased a copy of this recently. Definitely recommend, although I'm curious how out of date people think the content is, and how a second edition would improve things.
- amelius 4y agoDoes it cover cgroups?
- Manjuuu 4y agoNot outdated at all, but it would be nice to have a new edition with the errata [1] and maybe some additional content. Some sort of anniversary edition. [1] https://man7.org/tlpi/errata/index.html https://man7.org/tlpi/errata/index.html
- rumdz 4y agoI would also love an updated edition that includes additional content. The errata is regularly included with updated prints [1][2]. [1] https://man7.org/tlpi/errata/errata_by_print_run.html https://man7.org/tlpi/errata/errata_by_print_run.html [2] http://blog.man7.org/ http://blog.man7.org/
- HybridCurve 4y agoFully agree, this is a great book. Also need a 2nd edition of "Professional Linux Kernel Architecture" by Wolgang Mauerer.
- ghostpepper 4y ago> 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?
- jimsimmons 4y agoI haven't programmed in C for a long time but know the basics from college. Can I still work thru this material?
- signa11 4y agoyes, depending on your motivation level. which probably is true for everything under the sun.
- jimsimmons 4y agoI tried to write a linked list a while back and it took me like 3 hours. I was wondering if the recommendation would be brush up C first. Although, like you said, with enough motivation it'll just fold into the above curriculum
- ArcMex 4y agoI would brush up as I go because the motivation would be this book itself.
- atomize 4y agoI bet you could rewrite it in under an hour now. Programming in general is a lot like hacky sack. If you don't do it that often, it seems difficult, but you get a few kicks in. The more you do it, the easier it is.
- BossingAround 4y agoThe book is called "Advanced Linux Programming" and starts with a chapter that does a Hello World in C. Somehow, I feel like there's a bit of a disconnect.
- iamerroragent 4y agoDon't you get it though? Advanced Linux Programming is just C programming! Joke aside, you are right 'Hello World' does seem disconnected from 'Advanced'
- alexhsamuel 4y agoDefinitely not advanced in the sense of, "at the highest level in this topic." Publishers do ask for titles like this, though. 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.
- jesuspiece 4y agoTime for the rust version
- vrglvrglvrgl 4y ago[dead]
- bighoki2885000 4y ago[dead]
- commandersaki 4y agoI found the section on inline assembly useful. Not much coverage about it in general.