There are two books that I have read when I began my programming career.
One is <Advanced Programming in the UNIX Environment> written by W. Richard Stevens. The other is <Linux Device Drivers, 2nd Edition> written by Alessandro Rubini and Jonathan Corbet