LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 688|回复: 1

unix 进程组求问!!

[复制链接]
发表于 2006-9-12 17:48:12 | 显示全部楼层 |阅读模式
当一个进程组组长比其内的子进程先终止执行!

那么子进程将会被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);
}
 楼主| 发表于 2006-9-13 09:11:05 | 显示全部楼层
没人顶  自己顶先!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表