我知道我可以使用这个技巧if (fork()) exit(0);
改变当前进程的pid。因此,下面的程序的 pid 变化很快。如何杀死这样的进程?有没有比执行大量更好的方法killall procname
直到一个人能够奔跑kill()
在分叉之前?我知道这不是一个“进程”,而是许多进程,每个进程运行几微秒。
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
pid_t self = getpid();
while (1)
{
if (fork()) exit(0);
if (self + 10000 < getpid()) break; // Just to kill it after some time
usleep(1000);
}
return 0;
}
我发现列出进程的唯一方法是执行ps -A | grep procname
几次直到显示出一些输出。为什么进程不总是列出?
这样的过程被系统管理员称为“彗星”。
进程组 ID (PGID) 在 fork 上不会更改,因此您可以杀死它(或者SIGSTOP
它)通过向进程组发送信号(您将否定的 PGID 而不是 PID 传递给kill
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)