Apart from the section on perl programming, the contents of this page are derived entirely from Franco Callari's on-line OS course pages.

C programming

The definitive reference on C (a must for any C programmer) is:
* Kernighan, B. and Ritchie, D.
The C Programming Language, 2nd ed., Prentice-Hall, 1988.

Other useful references are:

* Schildt, H.
C: The Complete Reference, McGraw-Hill, 1991
* Waite, M., Prata, S.
The Waite Group's New C Primer, Sams, 1990.
On-line C programming courses:
* C programming
by Steve Summit.
* C programming
by Steve Holmes.
Don't forget that your question is likely to have been asked already: check out the list of Frequently Asked Questions in comp.lang.c maintained by Steve Summit, as well as the list of Infrequently Asked Questions in comp.lang.c by Peter Seebach.

A large repository of useful web pointers regarding C is kept at the University of Linköping, Sweden.

C++ programming

Given its downword compatibility with C, C++ is a viable option for any Unix system programming problem.

The definitive reference about it (complete and comprehensive it is, readable and simple it is not) is:

* Stroustrup, B
The C++ Programming Language, 2nd ed., Addison-Wesley, 1991.

An on-line tutorial is available here.

Perl programming

Perl, or Practical Extraction and Report Language provides programmers with the power of C yet the ease of use of a shell language.

Even though it doesn't cover in detail a few of the more esoteric issues, the definitive reference work (known affectionately as "the Camel book") is nontheless:

* Wall, L., Christiansen, T., and Schwartz, R.L.
Programming Perl, 2nd ed.,
Extensive on-line documentation, man pages, etc. is also available, as is a perl Frequently Asked Questions list.

UNIX system programming

Some good books on UNIX system programming (in C) include:

* Rochkind, M.
Advanced UNIX programming, Prentice-Hall, 1985.
* Stevens, R.
Advanced Programming in the UNIX Environment, Addison-Wesley, 1992.
* Stevens, R.
UNIX Network Programming, Addison-Wesley, 1990.
* Horspool, R. N.
C Programming in the Berkeley UNIX Environment, Prentice-Hall, 1986.

and, on the WWW, BSD Programmer's Supplementary Documents.

Shells and other programming tools

The classic starting point is:
* Kernighan, B., Pike, R.
The UNIX Programming Environment, Prentice-Hall, 1984.

A more recent "bible" on the subject is:

* Peek, J., O'Reilly, T., Loukides, M.
UNIX Power Tools, O'Reilly-Bantam, 1993.