text: This chapter describes processes and the library functions that operate on them.
  Executing a command starts a process that is numbered and tracked by the operating system. Processes are always generated by other processes. For example, log in to your system running a shell, then use an editor such as vi(1). Take the option of invoking the shell from vi(1). Execute ps(1) and you see a display resembling this (which shows the results of ps -f):
  User abc has four processes active. The process ID (PID) and parent process ID (PPID) columns show that the shell that started when user abc logged on is process 24210; its parent is the initialization process (process ID 1). Process 24210 is the parent of process 24631, and so on.
  A program might need to run one or more other programs based on conditions it encounters. Reasons that you might not want to create one large executable include:
  You might want to execute two, or more, of the modules concurrently.
  The load module might get too big to fit in the maximum process size for your system.
  You might not have control over the object code of all the other modules you want to include.
  The fork(2) and exec(2) functions let you create a new process (a copy of the creating process) and start a new executable in place of the running one.
  The .
  Functions that do not conclude successfully almost always return a value of -1 to your program. (For a few functions in man Pages(2): System Calls, there are calls for which no return value is defined, but these are the exceptions.) In addition to the -1 that is returned to the program, the unsuccessful function places an integer in an externally declared variable, errno. In a C program, you can determine the value in errno if your program contains the following statement:
  #include <errno.h>
  The value in errno is not cleared on successful calls, so check it only if the function returns -1. Since some functions return -1 but do not set errno refer to the man page for the function to be sure that errno contains a valid value. See error descriptions in Intro(2).
  Use the C language function perror(3C) to print an error message on stderr based on the value of errno, or strerror(3C) to obtain the corresponding printable string.