第三十三讲 进程的退出
一、退出的方式
- return 退出
- 调用 exit 函数退出
- 调用 _exit 函数退出
二、进程退出函数
1、函数表
函数 | 说明 | 返回值 | 头文件 |
---|---|---|---|
exit | 退出进程 | 无 | unistd.h| stdlib.h |
_exit | 退出进程 | 无 | unistd.h| stdlib.h |
2、介绍
- 二者都是用于终止一个程序
- 在调用 exit 和 _exit 后会将管理进程的结构体去除,并将使用的虚拟内存给释放掉
- _exit 调用时,会去除进程结构体以及释放占用虚拟内存,而 exit 从不会立马去除结构体,它会在进程退出之前要检查文件状态,将文件缓冲区中的内容写回文件 ,然后再去销毁进程结构体
三、进程退出实验
1、代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(char *argc, char **argv)
{
pid_t result;
result = fork();
if(result == -1)
{
printf("Fork error!\r\n");
return -1;
}
else if(result == 0)
{
printf("parent"); // 没有 \r\n 数据会在缓存区 不会打印出来
_exit(0);
}
else
{
printf("son"); // 会将缓冲区数据处理
exit(0);
}
return 0;
}
2、现象
只打印了 son 没有打印 parent