为什么UNIX系统调用kill称为“ kill”?


41

我对这个名称的历史感到好奇,在我看来,“ kill”系统调用可能已被命名为“ signal”,而“ signal”系统调用可能已被命名为“ handle”。

我想知道最初使用系统调用是否可能只是为了杀死另一个进程,随着系统的发展,它的使用范围可能会扩展到更通用的信号发送机制,但这只是我的推测。

有人知道吗?

Answers:


55

实际上,信号的最初目的是杀死目标进程。kill出现在Unix第三版 ; 当时,它是保留给root用户的,该过程被强制终止(例如今天的SIGKILL)并留下了核心转储。

Unix第4版增加了信号编号参数,以及signal用于设置信号处理程序的伴随系统调用。当时,除非目标进程调用,否则所有信号都会杀死目标进程ignore

随着时间的流逝,越来越多的信号出现了,其中一些信号默认不会终止目标进程。但是名字仍然存在。

POSIX委员会讨论重命名kill,因为当你注意不是所有信号都旨在终止目标进程,但是这是根深蒂固的那点历史使用,所以改变它会比没有更多的混乱。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.