Possible Duplicate:
shifting from windows to *nix programming platform
Does anyone know a good, compact resource that would allow me to migrate from Windows programming to Linux programming?
I managed to get simple apps running, checked daemon architecture, but somehow I don't know where to begin to get a better understanding of the best practices and common solutions for architecture in general.
I guess all threading, mutex, critical section, i/o, (named?)pipe stuff is probably way off from Windows development. But I can't find a good, compact documentation.
The daemons in Linux seem to be way simpler than in Windows, but I already stumbled upon fork function that is completely unusual, and there should be other things like that I guess.
Also, what's about all that POSIX compliance thing? I heard it's supposed to be platform agnostic, but I also read that it's not exactly supported under some distributions.
The Linux Programming Interface is amazing book I am reading now:
http://www.amazon.com/Linux-Programming-Interface-System-Handbook/dp/1593272200
Just look at its outstanding customers range - it is really excellent Linux programming book.
You might take a look at esr's The Art of Unix Programming, which will answer most of your questions.
It will explain the *nix philosophy, the design of the APIs, the origins and reasons for POSIX compatibility, and everything else.
As far as details on the *nix API goes, this is a good set of material:
http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
And somebody has pulled together a nice list of links to many resources here
While it's good to learn the target platform, I strongly recommend using Boost libraries wherever possible as wrappers around the platform-dependent behaviors (for threading, networking, etc.)
Beginning Linux Programming and Advanced Linux Programming are two good resources to start with.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With