Summary
In this chapter, we learned that process startup is not a trivial operation, and even native code binaries are not simply loaded into memory byte by byte. We learned how to explore the process tree with the pstree
command, how to force processes to terminate or reload with kill
, and how to examine and interpret exit codes.
We also learned that the kernel communicates with running processes using POSIX signals, that different signals have different meanings, and that there are more signals than what the kill
command allows the user to send. Apart from SIGTERM
or SIGKILL
, which are sent by users or userspace tools, there are many signals that the kernel uses to indicate programming errors and special conditions. Among them are SIGILL
, for programs that attempt to execute illegal CPU instructions, and SIGPIPE
, for cases when a connection is closed by the other side.
In the next chapter, we will learn how to discover and examine the hardware installed in a machine running...