网站建设服务器主板1150针食品包装设计风格
2026/4/10 21:43:39 网站建设 项目流程
网站建设服务器主板1150针,食品包装设计风格,建网站的大公司,广州建设网站公司哪个济南兴田德润有活动吗目录 一、父子进程关系 二、进程终止的 8 种场景 三、退出函数 1.exit() 1#xff09;基础信息 2#xff09;核心特点 3#xff09;参数 status 的作用 4#xff09;exit 与 return 的区别 2._exit() 1#xff09;基础信息 2#xff09;核心特点 四、退出后的…目录一、父子进程关系二、进程终止的 8 种场景三、退出函数1.exit()1基础信息2核心特点3参数 status 的作用4exit 与 return 的区别2._exit()1基础信息2核心特点四、退出后的进程状态1.僵尸进程Zombie2.孤儿进程Orphan五、进程空间的回收一、父子进程关系子进程是父进程的内存副本包含代码、数据、PCB 等资源写时复制Linux 2.6fork 后父子进程共享内存空间仅当某一方修改内存区域时才会开辟独立空间 —— 减少冗余内存开销。二、进程终止的 8 种场景正常终止main 函数中 return进程随 main 函数结束而退出exit()C 库函数会先刷新缓存、调用 atexit 注册的清理函数再关闭文件描述符_exit/_Exit系统调用直接关闭打开的文件但不刷新缓存、不执行清理函数主线程退出整个进程会随主线程结束而终止主线程调用 pthread_exit仅主线程退出进程是否终止取决于是否有其他线程在运行。异常终止abort()主动触发异常终止比如程序崩溃时会调用信号终止比如用 kill pid 给进程发终止信号最后一个线程被 pthread_cancel 取消线程被取消后进程随之终止。三、退出函数函数类型缓存处理执行流程exit()C 库函数刷新缓存刷新缓存 → 执行 atexit 清理函数 → 调用 _exit()_exit()系统调用不刷新缓存直接终止进程、释放资源1.exit()1基础信息类型C 标准库函数函数原型void exit(int status)示例调用exit(1);2核心特点功能让进程退出并刷新缓存区参数status进程退出的状态返回值缺省3参数 status 的作用status 用于表示进程的退出状态正常终止时状态由 exit 传入的 status 指定异常终止时状态由内核提供包含异常原因父进程可通过 wait/waitpid 获取该状态完成资源回收。常用预定义状态宏宏名值含义EXIT_SUCCESS0进程正常退出EXIT_FAILURE1进程异常退出4exit 与 return 的区别若 return 出现在 main 函数中会触发整个进程终止若 return 出现在其他函数中仅终止当前函数不影响进程运行。注main 中的 return 等价于 exit(return值)其他函数中 return 仅结束当前函数。exit 是进程正常终止的常用方式之一其优势在于能保证 I/O 缓存区的数据被正确刷写到目标文件避免数据丢失这是它与直接调用系统调用 _exit 的核心差异。2._exit()1基础信息类型Linux 系统调用直接与内核交互非库函数封装函数原型void _exit(int status);2核心特点功能直接终止当前进程但不刷新 I/O 缓存区—— 进程中暂存于 I/O 缓存的未写入数据会被直接丢弃无法保存到目标文件。参数status用于表示进程退出状态与 exit 的 status 作用一致父进程可通过 wait/waitpid 获取该状态完成子进程的资源回收。返回值无进程终止后无返回逻辑四、退出后的进程状态进程退出后不是所有资源都会立刻清理 —— 这就产生了两种特殊进程1.僵尸进程Zombie场景父进程创建子进程后子进程先退出但父进程没回收子进程的内核数据结构PCB特点用户空间内存已释放但内核里的 PCB 还在进程状态显示为 Zzombie危害如果父进程长期运行且频繁创建子进程僵尸进程会占满内核内存导致系统不稳定。可以使用 top 或 ps 指令查看2.孤儿进程Orphan场景父进程先退出子进程失去父进程特点子进程会被 init或systemd进程收养后续由新父进程负责回收资源结论无需额外关注系统会自动处理。五、进程空间的回收要解决僵尸进程问题父进程得主动调用 wait 函数回收子进程pid_t wait(int *status);功能父进程阻塞等待任意子进程退出并回收其 PCB参数 status存储子进程的退出状态不想关注可以传 NULL返回值成功返回被回收的子进程 PID失败返回 - 1。可以用这些宏解析 status 里的信息WIFEXITED(status)判断子进程是否正常终止WEXITSTATUS(status)获取子进程正常终止时的退出码WIFSIGNALED(status)判断子进程是否被信号终止WTERMSIG(status)获取终止子进程的信号编号。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询