Ⅰ linux C中父进程退出时,使用什么方法可使子进程退出
可以用wait( ) 或者 waitpid( ) 阻塞父进程,等待子进程自己退出后给子进程收尸;
或者在子进程中注册一个信号响应,响应动作为退出进程,然后在父进程要退出时,给子进程发送信号,然后等待子进程退出后收尸。
相关API:
wait( )
signal( )
exit( )
Ⅱ LINUX里,父进程退出了,子进程一定会退出吗
不。
若父进程退出,子进程尚未结束,则子进程会被init进程领养,也就是说init进程将成为该子进程的父进程。
若希望父进程退出,子进程也退出的话,可以使用线程,因为若进程结束,则还没结束的线程一定会立刻结束。或者如楼上所说,用信号,用atexit注册一个退出时执行的函数,这个函数中发送信号给子进程即可。
Ⅲ linux系统下 父进程创建子进程后退出 此时子进程叫什么
孤儿进程,望采纳
Ⅳ 小弟想问在linux中,main用fork创建了子进程,那么在用exit退出时,是退出父进程还是子进程
看你是在父进程中还是子进程调用的。比如
int pid = fork();
if (pid == 0)
{
/* 子进程 */
child_do_something();
exit(0); // 子进程退出
}
else
{
/* 父进程 */
parent_do_something();
exit(0); // 父进程退出
}
Ⅳ 如何让父进程退出时,子进程也退出 linux
理论上可以用信号。但是,没办法做到子进程退出同一时间父进程退出。必须父进程有调用检测。
Ⅵ 能否做到,父进程退出的时候,子进程全都退出
在网上查看waitpid和wait函数的用法,linux中使用这两个函数可以做到
Ⅶ Linux C中父进程退出时,使用什么方法可使子
1. 等所有子进程退出后,父进程再退出。
2. 发signal杀死子进程。
Ⅷ 在 linux中如何结束由一个父进程产生的所有子进程
父进程未结束,子进程先结束,会产生僵尸进程。
子进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。
即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。
僵尸进程的避免:
(1) 父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起。
(2) 如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler,因为子进程结束后, 父
进程会收到该信号,可以在handler中调用wait回收。
(3) 如果父进程不关心子进程什么时候结束,那么可以用signal(SIGCHLD, SIG_IGN) 通知内
核,自己对子进程的结束不感兴趣,那么子进程结束后,内核会回收, 并不再给父进程发送
信号。
(4) 还有一些技巧,就是fork两次,父进程fork一个子进程,然后继续工作,子进程fork一 个孙进
程后退出,那么孙进程被init接管,孙进程结束后, init会回收。不过子进程的回收 还要自己
做。
建议你使用第三种方法,父进程直接忽略子进程的结束,留给内核作回收处理。这样就不
会产生僵尸进程。
Ⅸ 在Linux中父进程先于子进程退出会造成什么结果
不。
若父进程退出,子进程尚未结束,则子进程会被init进程领养,也就是说init进程将成为该子进程的父进程。
若希望父进程退出,子进程也退出的话,可以使用线程,因为若进程结束,则还没结束的线程一定会立刻结束。或者如楼上所说,用信号,用atexit注册一个退出时执行的函数,这个函数中发送信号给子进程即可