我需要父进程比子进程更早结束。 这是代码:如何在孩子完成之前杀死父母的过程?
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
main()
{
extern int errno;
extern char* sys_errlist[];
pid_t pid;
int rv;
switch(pid=fork()) {
case -1:
perror("fork");
exit(1);
case 0:
printf(" CHILD: This is child-process!\n");
printf(" CHILD: My PID -- %d\n", getpid());
printf(" CHILD: My parent PID -- %d\n", getppid());
sleep(3);
printf(" CHILD: My new parent PID -- %d\n", getppid());//I think, that getppid() return 1
printf(" CHILD: Exit!\n");
exit(rv);
default:
printf("PARENT: This is parent-process!\n");
printf("PARENT: My PID -- %d\n", getpid());
printf("PARENT: My child PID %d\n",pid);
printf("PARENT: Exit!\n");
}
}
但我不确定它是否正确。这一计划的 输出:
PARENT: This is parent-process!
PARENT: My PID -- 943
PARENT: My PID -- 943
PARENT: My child PID -- 944
PARENT: Exit!
CHILD: This is child-process!
CHILD: My PID -- 944
CHILD: My parent PID -- 1
CHILD: My new parent PID -- 1
CHILD: Exit!
谢谢! PS。我很抱歉我的英语
欢迎堆栈溢出。请尽快阅读[关于]页面。你的英语完全可以理解。我会写“我需要父进程比孩子进程更早结束”。 –
后续问题是为什么你需要父母更快结束。如果仅仅是为了基本的测试目的,你可以简单地在孩子身上放一个足够长的“睡眠”并离开父母。或者你是否需要一个更持久的解决方案来解决真正的问题?如果是这样,你应该解释是什么问题。 – Duck
@Duck:有很多原因希望子进程超出父进程,尤其是当父进程启动后台或守护进程时。 –