说明:允许调用进程取得子进程的状态信息.调用进程将会挂起直到其一个子进程终止.
返回值:等待到一个子进程返回时,返回值为该子进程号,否则返回值为-1.同时stat_loc返回子进程的返回
值.
例子:/*父进程*/
if (fork()>0) {
wait((int *)0);
}
else {
exit(0);
}
7.waitpid()
功能:等待指定进程号的子进程的返回并修改状态
语法:#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid(pid,stat_loc,options)
pid_t pid;
int *stat_loc,options;
说明:当pid等于-1,options等于0时,该系统调用等同于wait().否则该系统调用的行为由参数pid和options
决定.
pid指定了一组父进程要求知道其状态的子进程:
-1:要求知道任何一个子进程的返回状态.
>0:要求知道进程号为pid值的子进程的状态.
<-1:要求知道进程组号为pid的绝对值的子进程的状态.
options参数为以比特方式表示的标志以或运算组成的位图,每个标志以字节中某个比特置1表示:
WUNTRACED:报告任何未知而又已停止运行的指定进程号的子进程的状态.该子进程的状态自停止运行时起就
没有被报告过.
WCONTINUED:报告任何继续运行的指定进程号的子进程的状态,该子进程的状态自继续运行起就没有被报告
过.
WHOHANG:若调用本系统调用时,指定进程号的子进程的状态目前并不是立即有效的(即可被立即读取的),调用
进程并被暂停执行.
WNOWAIT:保持将其状态设置在stat_loc的进程在可等待状态.
该进程将等待直到下次被要求其返回状态值.
返回值:等待到一个子进程返回时,返回值为该子进程号,否则返回值为-1.同时stat_loc返回子进程的返回
值.
例子:pid_t pid;
int stat_loc;
if ((pid=fork())>0) {
waitpid(pid,&stat_loc,0);
}
else {
exit(1);
}
printf("stat_loc is [%d]\n",stat_loc);
8.setpgrp()
功能:设置进程组号和会话号.
语法:#include <sys/types.h>
pid_t setpgrp()
说明:若调用进程不是会话首进程.将进程组号和会话号都设置为与它的进程号相等.并释放调用进程的控制
5