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

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

我很好奇这个名字的历史,在我看来,“kill”系统调用可以被命名为“signal”,而“signal”系统调用可以被命名为“handle”。

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

有人知道吗?

答案1

事实上,信号的最初目的是杀死目标进程。kill出现在Unix第三版;当时,它被保留给root,进程被强行终止(就像今天的SIGKILL)并留下核心转储。

Unix第四版添加了一个信号编号参数以及同伴signal设置信号处理程序的系统调用。当时,所有信号都会杀死目标进程,除非目标进程调用了ignore

随着时间的推移,越来越多的信号出现,其中一些信号并没有默认杀死目标进程。但这个名字仍然保留着。

POSIX委员会有争议的重命名kill,因为正如您所注意到的,并非所有信号都旨在终止目标进程,但这是当时根深蒂固的历史用法,因此更改它会比不更改它更令人困惑。

相关内容