在 linux 系统中通过系统调用什么来进行进程的创建

在 linux 系统中通过系统调用什么来进行进程的创建,第1张

该函数被调用一次,但返回两次。

进程的返回值是0,父进程的返回值则是子进程的进程I D。

子进程复制父进程的地址空间,文件描述符等。这种复制是copy-on-write。子进程不继承父进程的锁。

通常在fork()之后,会调用exec函数族,这样子进程里面的东西就跟父进程不一样了。

父进程则通常会调用wait()或者waitpid()等待子进程退出,做一些回收资源的工作。如果在子进程结束之前,父进程结束了,子进程就会交由init进程托管。

分几种情况:

父进程永不退出:这种情况下若子进程退出,而父进程没有收集子进程的退出状态,则此子进程会变为僵尸进程,一直占用少量资源,有危害;

父进程比子进程先退出:这种情况下父进程退出时,仍在运行的子进程会变为孤儿进程,孤儿进程会被托管给init进程,孤儿进程结束时由init进程负责回收;

父进程比子进程晚退出:子进程先退出时会变为僵尸进程,占用少量资源;待到父进程再退出时,子进程由僵尸进程变为孤儿进程,init进程会回收这些已僵死的孤儿进程,则这些已经僵死的孤儿进程就能瞑目而去了;

1:看下系统日志是否有记录,如dmesg,/var/log/message文件

2:将你的进程托管给系统的init进程,具体方法查下就知道

3:写个监控脚本,监控进程是否存在,记录进程消失的时候的系统状态

core有时候不一定会生成,如果是正常信号导致退出肯定不会有core


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/389531.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存