Unless a Unix/Linux systems programmer has been living under a rock somewhere, they've certainly heard of, if not directly worked with, the fork(2) system call. Why is it so well known and important? The reason is simple: Unix is a multitasking OS; programmers must exploit the OS's capabilities. To have an application multitask, we need to create multiple tasks or processes; the fork is the Unix way to create a process. In fact, to the typical systems programmer, fork is the only way available to create a process.
There is another system call to create a process or thread: clone(2). It also creates, well, a custom process. It's not typically used by Linux application developers; library (typically the thread library) developers use it more. In this book, we do not explore clone; for one thing, it's very Linux-specific and non-portable; for...