46、进程与线程相关知识详解

进程与线程相关知识详解

1. 进程终止

进程的终止方式有两种:
- 主动终止 :调用 exit(3) 函数。
- 被动终止 :接收到未处理的信号。其中, SIGKILL 信号无法被处理,会直接杀死进程。

无论哪种方式终止进程,都会停止所有线程、关闭所有文件描述符并释放所有内存。系统会向父进程发送 SIGCHLD 信号,告知子进程已终止。

进程有返回值,正常终止时返回 exit 函数的参数,被信号杀死时返回信号编号。在 shell 脚本中,可通过返回值判断程序执行结果,通常 0 表示成功,其他值表示失败。

父进程可使用 wait(2) waitpid(2) 函数收集子进程的返回值。但在子进程终止到父进程收集返回值之间会有延迟,此时子进程会成为僵尸进程,在 ps top 命令中显示为状态 Z 。若父进程未能及时收集返回值,僵尸进程会占用资源,最终可能导致无法创建新进程。

以下是一个进程创建和终止的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值