目录
1、fork函数介绍
函数原型:
pid_t fork(void);
例子:
#include<myhead.h>
int main(int argc, const char *argv[])
{
pid_t pid = -1; //定义变量存储创建的进程的id号
pid = fork(); //创建一个子进程
//对pid进行判断
if(pid > 0)
{
while(1)
{
printf("我是父进程\n");
sleep(1);
}
}else if(pid == 0)
{
while(1)
{
printf("我是子进程\n");
sleep(1);
}
}
sleep(1);
return 0;
}
功能:拷贝父进程得到子进程
返回值:成功时,父进程中返回子进程的pid号,子进程中返回0,失败返回-1并置位错误码
2、getpid函数介绍
函数原型:
pid_t getpid(void);
例子:
pid_t pid = fork(); //创建一个子进程
printf("我是父进程:pid = %d, 当前进程的id为:%d\n",pid, getpid());
功能:获取当前进程的进程号
返回值:当前进程的pid
3、getppid函数介绍
函数原型:
pid_t getppid(void);
例子:
pid_t pid = fork(); //创建一个子进程
printf("我是父进程:pid = %d,当前进程的父进程的id为:%d\n",pid,getppid());
功能:获取当前进程的父进程的pid号
返回值:当前进程父进程的pid
4、exit函数介绍
函数原型:
void exit(int status);
例子:
exit(EXIT_SUCCESS); //exit(0);
功能:退出当前进程,并刷新当前进程打开的标准IO文件指针的缓冲区
返回值:无
5、_exit函数介绍
函数原型:
void exit(int status);
例子:
_exit(EXIT_SUCCESS); //exit(0);
功能:退出当前进程,但是不刷新标准IO的缓冲区
返回值:无
6、wait函数介绍
函数原型:
pid_t wait(int *wstatus);
例子:
wait(NULL);
功能:阻塞回收子进程的资源,如果没有进程退出,那么就阻塞等待
返回值:成功返回回收的子进程的pid,失败返回-1并置位错误码
7、waitpid函数介绍
函数原型:
pid_t waitpid(pid_t pid, int *wstatus, int options);
例子:
waitpid(-1, NULL, 0); //阻塞回收
waitpid(-1, NULL, WNOHANG); //非阻塞回收
/*
参数1:要回收的进程号
>0:表示回收具体的某个进程
=0:能够回收当前进程所在的进程组中的任意一个子进程
=-1:回收任意一个子进程
<-1: 回收别的进程组(进程组id为给定的pid的绝对值)中的任意一个子进程
参数2:子进程退出时的状态,一般不接收,直接填NULL即可
参数3:表示是否阻塞回收僵尸进程
0:表示阻塞
WNOHANG:表示非阻塞
*/
功能:既可以阻塞也可以非阻塞形式回收僵尸进程
返回值:成功返回回收的子进程的pid,失败返回-1并置位错误码