Why is the UNIX system call kill named ‘kill’

historykill

I am curious about the history of the name, it seems to me that the 'kill' system call could have been named 'signal', and the 'signal' system call could have been named 'handle'.

I was wondering whether the original use of the system call might have been simply to kill another process, and its usage was perhaps broadened to a more general signal-sending mechanism as the system developed – but this is speculation on my part.

Does anyone know?

Best Answer

Indeed, the original purpose of a signal was to kill the target process. kill appeared in Unix 3rd Edition; at the time, it was reserved to root and the process was forcibly killed (like SIGKILL today) and left a core dump.

Unix 4th edition added a signal number argument, as well as the companion signal system call to set a signal handler. At the time, all signals killed the target process unless the target process had called ignore.

Over time, more and more signals appeared, a few of which did not kill the target process by default. But the name remained.

The POSIX committee debated renaming kill, because as you note not all signals are intended to terminate the target process, but this was entrenched historical usage by that point, so changing it would have been more confusing than not.