意外的 killall 行为

意外的 killall 行为

据我了解,killall name它查找所有名称为 name 的进程。因此killall killall应该查找并终止自身,所以我预计没有输出。所以我很好奇:
为什么它看起来像这样:

nathan:~ max$ killall killall
No matching processes belonging to you were found
nathan:~ max$ 

我目前使用 OS X。

答案1

根据 Linux 手册页,killall它不会自行终止。

编辑:我发现 OSX 手册页上没有提到这一点,但它可能有相同的行为。原因是您可以使用正则表达式,因此killall在指定正则表达式时,您完全有可能意外地尝试终止,而这会使其变得killall不那么有用。

编辑 2:我可能大错特错,但 OSX 不是叫做“达尔文”吗?killall那么源代码是OSX吗?

我的 C 语言有点生疏,但以下内容:

  if (thispid == mypid)
        continue;

在一个循环中迭代所有活动进程似乎是一个特定的检查,以将它试图终止的当前进程与它自己的 PID 进行比较,因此它会跳过自身。

killall如果你真的想要一个可以自行终止的程序,我想你可以下载那个源代码,删除这两行,然后重新编译它。

相关内容