列出所有我可以终止的进程,以便我可以终止它们

列出所有我可以终止的进程,以便我可以终止它们

我需要找出所有可以以我的用户身份(无权限)终止的进程,这样我才能终止它们。我该怎么做?我只想终止所有我能终止的进程。

答案1

杀()syscall 接受 PID-1来指定“所有可能的进程”。

如果进程号等于 -1,则签名发送给调用进程有权发送信号的每个进程,除了进程 1(在里面),但请参见下文。

[...]

POSIX.1 要求 kill(-1,签名)向调用进程可能发送信号的所有进程发送 sig,除了一些实现定义的系统进程。

从命令行使用kill -TERM -1。(必须明确指定信号名称,否则“-1”将被误解为指定 SIGHUP 而不是指定进程 ID)。


枚举所有可终止的进程:

  1. 找出特定于操作系统的方法来枚举所有存在的进程。没有 POSIX 标准 C API 可以执行此操作。
  2. 对于每个进程 ID,发送信号0(仅用于权限检查的虚拟信号)。如果得到零,则允许终止该进程;如果得到 -EPERM,则不允许。

请注意,为了随后终止所有这些进程而这样做是浪费时间,因为只要您知道 PID,就可以立即发送实际信号。(更不用说它依赖于非 POSIX 功能来进行进程枚举。)

相关内容