What is Unix System Programming???

Hi friends,
Hope u r doing well. I really find the phrase, "Unix System Programming" very very cool, I don't know the reason, but it since I love UNIX, I want to do system programming in unix. Could you please tell me what is really the meaning of unix system programming. I have a couple of books which are written on unix system programming, and I know that it is done mainly in C language. Please tell me about this system programming thing and why is it different from normal programming. And would I be able to earn a living by learning Unix System Programming?

Looking forward to your replies.!

Hi gabam,

have a look at 'The Art of Unix Programming' by Eric S. Raymond (The Art of Unix Programming).

see ya
fra

UNIX system programming means things like these : writing a shell, writing a fsck program for your favourite file system, writing a daemon for your UNIX/UNIX-like OS, writing your version of ps. So it means writing code that heavily depends on the system calls, that does things close related to the UNIX system. It means coding basic (and necessary) utilities used every day by you/sysadmin. To be a UNIX system-programmer, you must understand well UNIX concepts, UNIX system and library calls -- that is, (2) and (3) sections in man pages, and to understand how thinks are being done (e.g., what daemon(3) does, not simply using daemon() function).

Some books that help:

  1. Advanced Programming in the UNIX Environment, 2nd edition
  2. Advanced UNIX Programming
  3. The Linux Programming Interface
  4. Linux System Programming
  5. UNIX Network Programming, vol.2, 2nd edition : interprocess communication
  6. UNIX Network Programming, vol.1, 2nd, 3rd editions : network programming

Note that there is also UNIX kernel programming, that is programming kernel modules or programming code right in the kernel. Stuff that is in the (9) section of BSD man pages.

---------- Post updated at 02:27 PM ---------- Previous update was at 02:17 PM ----------

Again :

System programming is different from application programming because s.p. deals with basic and needed functionality added to the (UNIX) system, while application programming focuses on getting a working program for your/your customer need.

Since you said you love UNIX, there is no better way to love it
than to program on it. (And also to admin it.)

Thanks alot for this wonderful guidance. Could you please tell me one more thing. Which UNIX should I go with, I mean which UNIX has the most demand, or which UNIX is simply the best. Once again I don't why but I love Solaris, do I have a good future career if I stick only to Solaris and learn it thoroughly??? Or should I also concentrate on Linux or freebsd etc as well?
Thanks

The rules prohibit these kind of religious wars :stuck_out_tongue: Which is "best" is open to much interpretation. Which gets you the "best" jobs can also vary and is subject to the laws of supply and demand; the most popular may not the most "in demand" or command the best job because it's the most popular, and other people think the same way you do -- because employers don't need to hire you in particular. Both strategies can work, or not.

I'd always suggest diversifying your knowledge rather than not, anyway. What if someday fate decrees that you really must deal with systems that aren't Solaris?

Get a Linux (Slackware, Debian, Gentoo, OpenSuSE), install on it VMWare (Player, Server, Workstation), and run on it other UNIX OSes : FreeBSD, NetBSD, OpenBSD, Solaris 10, Solaris 11. UNIX means also diversity. You should not stick to only one implementation.

Also, read some books on operating systems theory (to understand well the theory of OSes) :

  1. Modern Operating Systems - Tanenbaum
  2. Operating System Concepts - dynosaurus book