意外的killall行为

bot*_*t47 1 kill macos

根据我的理解killall name,它查找名称为名称的所有进程。所以killall killall应该查找并杀死自己,所以我预计没有输出。所以我很好奇:
为什么它看起来像这样:

nathan:~ max$ killall killall
No matching processes belonging to you were found
nathan:~ max$ 
Run Code Online (Sandbox Code Playgroud)

我在当前的 OS X 上。

Law*_*ceC 5

根据 Linux 手册页killall不会自杀。

编辑:我看到 OSX 手册页上没有提到这一点,但它可能具有相同的行为。原因是您可以使用killall正则表达式,因此您完全有可能在指定正则表达式时不小心尝试杀死,这将变得killall不那么有用。

编辑 2:我对此可能大错特错,但 OSX 不叫“达尔文”——不是 OSX的源代码killall吗?

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

  if (thispid == mypid)
        continue;
Run Code Online (Sandbox Code Playgroud)

在似乎是遍历所有活动进程的循环中,似乎是一个特定的检查,用于将它试图杀死的当前进程与其自己的 PID 进行比较,因此它会跳过自己。

猜猜你可以下载那个源代码,删除这两行,然后重新编译它,如果你真的想要一个killall会自杀的东西。