我很好奇这个名字的来历,在我看来,'kill' 系统调用可以被命名为'signal','signal' 系统调用可以被命名为'handle'。
我想知道系统调用的最初用途是否可能只是为了杀死另一个进程,随着系统的发展,它的用途可能会扩展到更通用的信号发送机制 - 但这是我的猜测。
有人知道吗?
Gil*_*il' 59
事实上,信号的最初目的是杀死目标进程。kill
出现在Unix 3rd Edition 中;当时,它被保留给 root 并且进程被强行杀死(就像今天的 SIGKILL)并留下一个核心转储。
Unix 第 4 版添加了信号编号参数,以及signal
用于设置信号处理程序的配套系统调用。当时,所有信号都会杀死目标进程,除非目标进程调用了ignore
.
随着时间的推移,越来越多的信号出现,其中一些默认没有杀死目标进程。但名字留了下来。
该POSIX委员会讨论重命名kill
,因为当你注意不是所有信号都旨在终止目标进程,但是这是根深蒂固的那点历史使用,所以改变它会比没有更多的混乱。