Explain why compilers can overwrite running executables.

Chapter 18, exercise 1.
Explain link resolution problem.

Chapter 18, exercise 2.
Implement the `realpath(3)` library function.

Chapter 18, exercise 3.
Implement the getcwd(3) library function.
Show stats of the types of files of a directory using nftw(3).

Chapter 18, exercise 7.
Implement the nftw(3) library function.

Chapter 18, exercise 8.
Add benchmark program of chdir(2) vs fchdir(2).

Chapter 18, exercise 9.
Demonstrate the behavior of ignoring pending signals.

Chapter 20, exercise 2.
Add programs to demonstrate SA_RESETHAND and SA_NODEFER flags.

Chapter 20, exercise 3.
Implement siginterrupt(3) in terms of sigaction(2).

Chapter 20, exercise 4.
Implement the abort(3) library function.

Chapter 21, exercise 1.
Show that SIGCONT signal handler is only run after it is unblocked.

Chapter 22, exercise 1.
Show order in which signals are handled (standard and realtime).

Chapter 22, exercise 2.
Implement System V signal API using standard POSIX API.

Chapter 22, exercise 4.
Improvements on the ignore_pending program.
Fix typos and unblock SIGABRT in abort implementation.
Add SystemV API missing function - sigset.
Minor improvements.
Merge branch 'chap21'
Merge branch 'chap22'