我需要父進程比子進程更早結束。 這是代碼:如何在孩子完成之前殺死父母的過程?
#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:有很多原因希望子進程超出父進程,尤其是當父進程啓動後臺或守護進程時。 –