新父母总是"初始化"还是有某种方法来控制谁成为新的父母?
维基百科似乎表明它总是"初始化".我真的希望事实并非如此.我尝试过setpgid和setsid所能想到的一切,但没有运气.现在,我看到这篇维基百科文章,我需要建议.
在类Unix操作系统中,任何孤立的进程都将立即被特殊的init系统进程采用.此操作称为重新父级并自动发生.尽管从技术上讲,该进程将"init"进程作为其父进程,但它仍称为孤立进程,因为最初创建它的进程不再存在. 取自维基百科
我问的原因是因为我正在制作一个运行许多工作流程的Mac应用程序.我希望这些工作进程在任务管理器的进程层次结构中显示为主进程的子进程.一些工作者作为不同的用户运行,并且在Mac OS XI上需要分叉两次以将权限传递给子进程.因为我"双叉"工作人员目前作为守护人员运行,当与任务管理员一起查看时,我看到工作人员正在将"init"作为他们的父进程.
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main ( void ) {
int pid, fpid, ppid;
fpid = fork();
printf ("fpid is is %d\n", fpid);
sleep(5);
if (fpid > 0) {
pid = getpid();
ppid = getppid();
printf ("\nThis is Parent. My pid %d. My parent's pid %d\n", pid, ppid);
} else if (fpid == 0) {
sleep(1);
pid = getpid();
ppid = getppid();
printf ("\nThis is Child. My pid %d. My parent'a pid %d\n", pid, ppid);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为当父进程 …