-
pid_t fork(void);
功能:创建子进程
返回值:
成功:在父进程中:返回子进程的进程号 >0
在子进程中:返回值为0
失败:-1并设置errno
int main(int argc, char const *argv[])
{
pid_t pid;
int num = 10;
if((pid = fork()) < 0) //功能:创建一个新的进程
{
perror("fork err");
return -1;
}
else if(pid == 0)
{
//in child
//num = 100;
printf("in child\n");
// while(1);
}
else
{
//in parent
// sleep(1);
printf("in parent\n");
// printf("num:%d\n", num);
while(1);
}
return 0;
}
回收进程资源
pid_t wait(int *status);
功能:回收子进程资源(阻塞)
参数:status:子进程退出状态,不接受子进程状态设为NULL
返回值:成功:回收的子进程的进程号
失败:-1
pid_t waitpid(pid_t pid, int *status, int options);
功能:回收子进程资源
参数:
pid:>0 指定子进程进程号
=-1 任意子进程
=0 等待其组ID等于调用进程的组ID的任一子进程
<-1 等待其组ID等于pid的绝对值的任一子进程
status:子进程退出状态
options:0:阻塞
WNOHANG:非阻塞
返回值:正常:结束的子进程的进程号
当使用选项WNOHANG且没有子进程结束时:0
出错:-1