|
|
当一个进程组组长比其内的子进程先终止执行!
那么子进程将会被init进程领养, 子进程的父进程会自动变成init进程,同理子进程的进程组id也会被自动设置成init进程id????
是这样吗?
看下面的例子:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
int pid, gpid;
gpid = getpid();
setpgid(0, gpid);
pid = fork();
if(pid == 0) {
setpgid(0, gpid);
sleep(5);
printf("Current pgid is %d\n", getpgid());
}
exit(0);
}
程序输出为1
当一个进程组组长创建一个子进程时,如果不明确设置子进程的进程组id,那么在该进程组长终止之前,该子进程都会属于该进程组:
例子:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main(void) {
int pid, gpid;
gpid = getpid
setpgid(0, gpid);
pid = fork();
if(pid == 0) {
printf("Current pgid is %d\n", getpgid());
} else {
waitpid(pid);
}
exit(0);
} |
|