IO进程线程、exit()对于子父进程、

exit 函数对于父进程和子进程的作用是不同的:

1. 父进程中的 exit:当父进程中调用 exit函数时,父进程会立即终止,并且父进程的资源会被释放。这包括关闭文件描述符、释放内存等。父进程的终止不会直接影响子进程的状态,子进程将继续运行,成为孤儿进程。

2. 子进程中的 exit:当子进程中调用 exit 函数时,子进程会立即终止,并且子进程的资源会被释放。这会触发子进程的退出处理,包括调用已注册的退出处理程序(如果有的话)。父进程可以通过调用 wait 或 waitpid等系统调用来等待子进程的终止,并收集子进程的退出状态信息,以确保子进程的资源得以释放。

        在通常情况下,父进程和子进程独立运行,它们的 `exit` 调用不会直接影响彼此。父进程可以继续运行,而子进程可以终止,或者它们都可以终止,这取决于它们各自的逻辑和执行路径。需要注意的是,子进程在终止时如果没有被父进程回收,可能会成为僵尸进程,而这是需要避免的情况。

        注意:只要父进程退出不管是被return,或者exit,其都会被释放销毁,但是子进程被退出(不管是exit或者return),最好用wait函数来接收释放子进程。

原因:

        在一般情况下,如果父进程在子进程之前调用 `exit` 而没有调用 `wait` 或 `waitpid` 等系统调用来等待子进程的终止,子进程会成为僵尸进程,但子进程本身仍然会被销毁。

        子进程成为僵尸进程意味着子进程的退出状态信息仍然存在于系统进程表中,但子进程的资源已被释放,无法再运行。这是因为父进程没有回收子进程的退出状态,所以子进程的退出状态信息仍然挂在那里。

        虽然子进程的资源已被释放,但为了彻底清除子进程的信息,父进程通常应该调用 `wait` 或 `waitpid` 来等待子进程的终止,然后操作系统会将子进程的退出状态信息从进程表中移除,释放相关资源,最终销毁子进程的相关信息。

        虽然子进程本身最终会被销毁,但僵尸进程的存在会占用系统资源,因此良好的编程实践通常涉及在父进程中对子进程进行回收。

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clown_30

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值