111

#include<unistd.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
#include <signal.h>
int main(void)
{
pid_t childpid;
int status;
int retval;
childpid = fork();
if (-1 == childpid)
{
perror("fork()");
exit(EXIT_FAILURE);
}
else if (0 == childpid)
{
puts("In child process");
printf("子进程号 = %d,子进程睡眠100秒\n",(int)getpid());
sleep(100);
exit(EXIT_SUCCESS);
}
else
{
printf("父进程号=%d,父进程等待子进程结束,若未结束则立即返回\n", (int)getpid());
if (0 == (waitpid(childpid, &status, WNOHANG))) //立即返回
{
printf("杀死子进程前当前的活跃进程\n");
retval = kill(childpid, SIGKILL);
printf("父进程杀死子进程\n");
if (retval)
{
puts("killfailed.");
perror("ki11");
waitpid(childpid, &status, 0);
}
else
{
printf("d killed\n", childpid);
printf("杀死子进程后当前的活跃进程\n");
}
}
}
exit(EXIT_SUCCESS);
}

posted @ 2022-06-03 21:32  吴显平  阅读(970)  评论(0编辑  收藏  举报