Hacker News new | past | comments | ask | show | jobs | submit login
Advanced Linux Programming (advancedlinuxprogramming.com)
136 points by jfaucett on Oct 8, 2012 | hide | past | favorite | 14 comments



An old and not really advanced Linux programming book. See comments on Amazon:

http://www.amazon.com/Advanced-Linux-Programming-CodeSourcer...


As one of the Amazon reviewers states, "sockets receive a scant five pages." Does anyone know of an education resource like this that does cover some real world socket programming examples in C (or C++)? This would help me immensely in an upcoming project.


Stevens's Unix Network Programming is the classic. Any edition will do -- quite frankly the first is clearest. He gets coverage-happy (STREAMS, seriously?) in the 2nd and the 3rd (completed by another author after Stevens's death) is just plain too big.


No, really. Whatever else you refer to, make sure you include Stevens' UNP. (edit: agree also, 1st edition is the best by far)


Beej's networking guide is pretty good

http://beej.us/guide/bgnet/


After reading the Beej's guide to networking programming [1], I wondered what could be the simplest approach to making a multiclient socket server using unix pthreads/mutexes. I ended up writing [2] (C++), mostly as an exercise. Although I have never tested it properly nor I consider myself to be a great programmer, it seems to work. Not something to learn from, though. Anyway, any feedback is really appreciated.

[1] http://beej.us/guide/bgnet/

[2] https://github.com/raaapha/multichat


I found that opening a socket and using select is pretty straightforward. When I write an app, the head-scratching is generally over how to build an event-loop to juggle all the stuff I have going on. Most of the time when I write a tool it will need to do this, but I haven't seen any good books that cover it.

Are there any book recommendations about taking the next step? i.e. Structuring your application so you do regular reads and writes, sleep at sensible times so you aren't sledging the host, useful message-passing patterns. That talk about the tradeoffs, and optimisations, whether you should be doing one select per loop, or trying to do a greedy read on each pass, possibly even running select a few times in order to get that data in.

Stevens volume I seems like it would have been a good place for this, maybe it's out of scope. It focuses on ways you can use the unix API, but avoids straying into application design issues.


The Linux Programming Interface by Kerrisk has pretty thorough coverage of sockets (and everything else).

http://www.amazon.com/The-Linux-Programming-Interface-Handbo...


I prefer to use libevent, it is more tested and proven than i could make.


Here is the book and code bzip2ed: https://dl.dropbox.com/u/94483242/linux.tar.bz2


Any ebook version?


    I Advanced UNIX Programming with Linux
    
    1 Getting Started
    2 Writing Good GNU/Linux Software
    3 Processes
    4 Threads
    5 Interprocess Communication
    
    
    II Mastering Linux
    
    6 Devices
    7 The /proc File System
    8 Linux System Calls
    9 Inline Assembly Code
    10 Security
    11 A Sample GNU/Linux
    
    
    III Appendixes
    
    A Other Development Tools
        A.1 Static Program Analysis 259
        A.2 Finding Dynamic Memory Errors 261
        A.3 Profiling 269
    
    B Low-Level I/O
        Reading and Writing Data 282
        stat 291
        Vector Reads and Writes 293
        Relation to Standard C Library I/O
        Functions 295
        B.5 Other File Operations 296
        B.6 Reading Directory Contents 296
    
    C Table of Signals


Hmm not so sure about the example code.. Shouldn't the code be checking for EINTR when calling read/write/etc..?


This is an excellent book. When I left school, I read it and did a few side projects. That was more than enough to prepare for my interviews.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: