I am trying to learn Linux system programming, which is the best book to learn this?
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
The Linux Programming Interface by Michael Kerrisk
Note that the author is the current maintainer of the Linux man pages. And that it's not out yet so I can't actually say how good it is, but I've read the blog posts about it and it sounds like a good book. (and he is the maintainer of the man pages, and those are mostly well written and he ought to know his stuff)
EDIT: book is now out.
Here you can find a database of the best books to learn Linux: http://www.tldp.org/guides.html
I'm currently reading Introduction to Linux - A Hands on Guide by Machtelt Garrels
And I like it, the way it's written make it easy to understand.
I second the Stevens recommendation. The only real alternative is Advanced UNIX Programming by M.J. Rochkind: http://basepath.com/aup/
ORA's POSIX Programmer's Guide (http://oreilly.com/catalog/9780937175736) may be useful, but I haven't read it myself.
The Linux Programming Interface is now available...
I'd recommend Bruce Molay's "Understanding Unix/Linux Programming" (http://wps.prenhall.com/esm_molay_UNIXProg_1/). I had him as an instructor at Harvard, and he was fantastic.
The Design of the UNIX Operating System by Maurice J. Bach -classic book describes the internal algorithms and the structures that form the basis of the UNIX ®operating system and their relationship to the programmer interface
You can read into the book called, Linux System Programming on Google Books . It's a really good book, I can recommend.