全部博文(71)
分类: LINUX
2008-04-15 21:02:28
一、进程组
1.
名称:: |
getpgrp |
功能: |
得到进程的进程组id |
头文件: |
#include |
函数原形: |
pid_t getpgrp(void); |
参数: |
无 |
返回值: |
调用进程的进程组ID |
进程组是一个或多个进程的集合,通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程除了一个进程ID之外,还属于一个进程组。每个进程组有一个唯一的进程组ID。
2.
名称:: |
getpgid |
功能: |
得到进程的进程组id |
头文件: |
#include |
函数原形: |
pid_t getpgid(pid_t pid); |
参数: |
pid 进程组id |
返回值: |
若成功则返回进程组ID,若出错则返回-1。 |
getpid的功能与getpgrp的功能相似,getpgrp返回调用进程的进程组,而getpgid返回指定进程的进程组,getgpid(0);等价于getpgrp(); .
每个进程组都可以有一个组长进程。组长进程的进程ID等于其进程组ID。组长进程可以创建一个进程组,创建该进程组中的进程,然后终止。
3.
名称:: |
setpgid |
功能: |
加入或创建一个进程组 |
头文件: |
#include |
函数原形: |
pid_t setpgid(pid_t pid,pid_t pgid); |
参数: |
pid 进程id pgid 进程组id |
返回值: |
若成功则返回进程组ID,若出错则返回-1。 |
setpgid函数将pid进程的进程组ID设置为pgid,如果这两个参数相等,则由pid指定的进程变成进程组组长。如果pid是0,则使用调用者的进程Id。如果pgid是0,则有pid指定的进程ID将用作进程组id。
#include #include main(); { pid_t cpid; pid_t fpid; if((cpid=fork())==0) { sleep(1); printf(“I’m child,my id is %d, gpid is %d\n”,getpid(),getpgrp()); } else { fpid=getpid(); setpgid(cpid,fpid); printf(“I’m father,my id is %d,gpid is %d\n”,fpid,getpgrp()); waitpid(cpid,NULL,0); } } |