社区
C语言
帖子详情
linux下主进程fork一个子进程,子进程处理完之后退出,但主进程不退出,这是子进程就变成了僵进程,有什么办法避免?
liangwd
2003-08-19 06:23:16
我想的是如果子进程退出之后,该子进程在系统中就不存在了.如果实现呢?
谢谢!
...全文
234
1
打赏
收藏
linux下主进程fork一个子进程,子进程处理完之后退出,但主进程不退出,这是子进程就变成了僵进程,有什么办法避免?
我想的是如果子进程退出之后,该子进程在系统中就不存在了.如果实现呢? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Gnepys
2003-08-19
打赏
举报
回复
看一下<Unix高级编程>里面讲得很清楚!
出现僵死进程的情况,是主进程fork了一个子进程,主进程先退出才会出现僵死进程!
你可以把控制权交给init(进程号1),系统会自动回收进程资源!
Linux
:
fork
函数&
僵
尸
进程
&孤儿
进程
fork
函数创建
子
进程
:
fork
函数:pid_t
fork
(void),让
进程
在运行时调用
fork
创建
一个
新
进程
,该新
进程
称为
子
进程
;
fork
函数没有参数
fork
函数有两种返回值 创建失败 返回值小于0 创建成功 返回值等于0,表示返回给
子
进程
创建成功 返回值大于0,表示返回给父
进程
,值为
子
进程
的PID 创建失败,返回值小于0 创建成功,返回值等于0,表示返回给
子
进程
返回值大于0,表示返回给父
进程
,该值为
子
进程
的PID
子
进程
拷贝父
进程
的PCB原理:父
进程
调用
fork
函数拷
linux
——父
进程
等待
子
进程
退出
exit,正常
退出
,这种情况需要执行WEXITSTATUS(status),取
子
进程
传送给exit、_exit或_Exit参数的低8位。需要知道
子
进程
干
完
没,正常
退出
为干
完
了,异常
退出
有3种情况,abord、ctrl+c。运行打印结果,可以正常获取到
子
进程
退出
的返回值3。
子
进程
退出
状态不被收集,
变成
僵
尸
进程
(
僵
死
进程
)创建
子
进程
的目的————干活。父
进程
等待
子
进程
退出
,并收集
子
进程
的
退出
状态。非空:
子
进程
退出
状态放在它所指向的地址中。为什么要等待
子
进程
退出
?父
进程
等待
子
进程
api。并且不会形成
僵
死
进程
。
fork
函数、
进程
退出
、
进程
等待
pid_ t v
fork
(void)–创建
一个
子
进程
(在
fork
实现了写时拷贝技术
之后
,用的就很少了) ,创建
一个
子
进程
出来,父
子
进程
共用同
一个
虚拟地址空间,“create a child process and block parent”——创建
一个
子
进程
并阻塞父
进程
,直到自己成exit
退出
,或程序替换
之后
,父
进程
再开始运行。如果传递NULL,表示不关心
子
进程
的
退出
状态信息。在
进程
创建中就是:
子
进程
复制了父
进程
中的大部分的信息,因此
子
进程
有自己的变量,但是自己的变量经过页表映射后与父
进程
访问的是。
linux
-
进程
(2)
fork
. v
fork
.
进程
的
退出
fork
()函数 函数原型 pid_t
fork
(void); 返回值 返回两次pid 成功:在父
进程
中返回
子
进程
的pid(非负数),在
子
进程
中返回0。 失败:父
进程
中返回-1,不创建
子
进程
。 ps:在使用
fork
的时候,
fork
()之前的语句只会执行一次,
fork
()
之后
的语句会执行两次,分别是父
子
进程
的执行。父
子
进程
的执行顺序是不一定的。 简要概述:引用连接 早期的Unix内核: 把父
进程
的所有内容拷贝给
子
进程
Unix系统,用于实现一种傻瓜式的
进程
创建:当发出
fork
()系统调用时,内核原样复制
linux
中
fork
函数及
子
进程
父
进程
执行顺序
目录 一、
fork
入门知识 二、
fork
进阶知识 一、
fork
入门知识
一个
进程
,包括代码、数据和分配给
进程
的资源。
fork
()函数通过系统调用创建
一个
与原来
进程
几乎
完
全相同的
进程
,也就是两个
进程
可以做
完
全相同的事,但如果初始参数或者传入的变量不同,两个
进程
也可以做不同的事。
一个
进程
调用
fork
()函数后,系统先给新的
进程
分配资源,例如存储数据和代码的空间。然后把原来的
进程
的所有值都复制到新的新
进程
中,只有少数值与原来的
进程
的值不同。相当于克隆了
一个
自己。 我们来看
一个
例子: ...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章