1. 进程终止
有八种方式使进程终止。其中5种是正常,它们是:
从main函数返回
调用exit
调用_exit或_Exit
最后一个线程从其启动例程返回
从最后一个线程调用pthread_exit
异常终止有三种方式:
调用abort
收到一个信号
最后一个线程对取消请求做出响应
1.1 退出函数
以下三个函数用于正常终止一个程序。其中_exit和_Exit是系统调用,立即进入内核;exit则先执行一些清理工作,然后返回内核
void _exit(int status);
void _Exit(int status);
void exit(int status);
exit函数总是执行标准I/O库的清理关闭操作,对于所有打开的流调用fclose函数,这会造成输出缓冲中的所有数据被写(冲洗)到文件上。
这三个退出函数都有一个参数,即终止状态(或退出状态)。main函数返回一个整形值与用该值调用exit是等价的。于是在main函数中exit(0); 等价于return 0;
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码
在 Unix 和 Linux 系统中,程序可以在执行终止后传递值给其父进程,这个值被称为退出码(exit code)或退出状态(exit status)。在 POSIX 系统中,惯例做法是当程序成功执行时传递 0 ,当程序执行失败时传递 1 或比 1 大的值。
echo $? 可以查看程序运行的终止码,如果main函数没有指定return 0;或者exit(0);,程序返回的终止码是随机的
fork exec之后如何回收进程
https://www.jianshu.com/p/7ba4ab937c54
共享内存与存储映射(mmap)
https://www.cnblogs.com/huangfuyuan/p/9476951.html
阻塞态占用CPU吗
https://blog.csdn.net/weixin_44844089/article/details/115655642
sleep 进程挂起
https://blog.csdn.net/fly__chen/article/details/53175301
https://blog.csdn.net/qimi123456/article/details/52225726