Process Control and Users
This lesson will introduce you to other system calls to manage and control processes.
We'll cover the following
Sending signals to a process
Beyond fork()
, exec()
, and wait()
, there are a lot of other interfaces for interacting with processes in UNIX systems. For example, the kill()
system call is used to send signals to a process, including directives to pause, die, and other useful imperatives. For convenience, in most UNIX shells, certain keystroke combinations are configured to deliver a specific signal to the currently running process; for example, control-c sends a SIGINT
(interrupt) to the process (normally terminating it) and control-z sends a SIGTSTP
(stop) signal thus pausing the process in mid-execution (you can resume it later with a command, e.g., the fg
built-in command found in many shells).
The entire signals subsystem provides a rich infrastructure to deliver external events to processes, including ways to receive and process those signals within individual processes, and ways to send signals to individual processes as well as entire process groups. To use this form of communication, a process should use the signal()
system call to “catch” various signals; doing so ensures that when a particular signal is delivered to a process, it will suspend its normal execution and run a particular piece of code in response to the signal.
Get hands-on with 1400+ tech skills courses.