一、进程组
1.
|
名称:: |
getpgrp |
|
功能: |
得到进程的进程组id |
|
头文件: |
#include <unistd.h> |
|
函数原形: |
pid_t getpgrp(void); |
|
参数: |
无 |
|
返回值: |
调用进程的进程组ID |
进程组是一个或多个进程的集合,通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程除了一个进程ID之外,还属于一个进程组。每个进程组有一个唯一的进程组ID。
2.
|
名称:: |
getpgid |
|
功能: |
得到进程的进程组id |
|
头文件: |
#include <unistd.h> |
|
函数原形: |
pid_t getpgid(pid_t pid); |
|
参数: |
pid 进程组id |
|
返回值: |
若成功则返回进程组ID,若出错则返回-1。 |
getpid的功能与getpgrp的功能相似,getpgrp返回调用进程的进程组,而getpgid返回指定进程的进程组,getgpid(0);等价于getpgrp(); .
每个进程组都可以有一个组长进程。组长进程的进程ID等于其进程组ID。组长进程可以创建一个进程组,创建该进程组中的进程,然后终止。
3.
|
名称:: |
setpgid |
|
功能: |
加入或创建一个进程组 |
|
头文件: |
#include <unistd.h> |
|
函数原形: |
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 <unistd.h> #include <sys/types.h>
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); } } |
本文详细介绍了Unix/Linux系统中进程组的概念及其管理方法,包括如何获取进程组ID、改变进程组归属以及创建进程组。通过实例展示了如何在父子进程中进行进程组ID的获取与设置。
889

被折叠的 条评论
为什么被折叠?



