When I wrote the first edition of Advanced UNIX Programming in 1984, UNIX was already 15 years old. I've just finished the second edition, and another 20 years have passed. It's interesting to ask, how has UNIX Programming changed since 1984? Well, some things are pretty much the same, and, of course, a lot is different.
The Fundamentals Are Mostly Unchanged
What's the same is that UNIX still works in essentially the same way. Processes are created with fork, the program the process runs is chosen by one of the exec calls, you open a file with open, and so on. Manyperhaps mostserious UNIX programs access the Internet nowadays, and those system calls (socket, connect, and so on) are also nearly unchanged since they were introduced in BSD UNIX in the 1980s. Even the primary implementation language, C, is largely unchanged, although it has grown up: Its standard has been revised a few times, and everybody now codes with function prototypes and without assuming anything about the size of integers and pointers.
In fact, as I prepared for the second edition of the book, I discovered that the book's 1984 example code still worked, although the GCC compiler complained a lot about the primitive form of C in which those programs were written.