0
我運行Debian的Linux我的C計劃,該計劃預計將輸出在C,LINUX,約殺死並提高
$ ./kill_raise
Child(pid : 4877) is waiting for any signal
Parent kill 4877
,但我剛剛
父殺4877
子進程中的字符串(Child(pid:%d)正在等待任何信號)未打印出來,爲什麼?
,這是我的程序
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(int argc, char *argv[])
{
pid_t pid;
int res;
pid = fork();
if (pid < 0)
{
perror ("Fork error\n");
exit(0);
}
if (pid == 0)
{
printf ("child(pid:%d) is waiting for signal\n", getpid());
raise(SIGSTOP);
exit(0);
}
else
{
if ((waitpid(pid, NULL, WNOHANG)) == 0)
{
if ((res = kill(pid, SIGKILL)) == 0)
{
printf ("parent kill %d\n", pid);
}
}
waitpid(pid, NULL, 0);
exit(0);
}
}
OP可能希望擺脫'WNOHANG'來實際等待'SIGSTOP'發生。 –
謝謝,我在父母身上睡5s,我得到了預期的輸出,但有沒有更好的方法來做到這一點? – 217LeeSin
如果您在回覆R時看到我的最後一條評論,請忽略它;那是錯的。 –