如何防止僵尸进程的产生之fork两次
来源:互联网 发布:csp绘画软件mac 编辑:程序博客网 时间:2024/06/16 14:25
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<signal.h>
int main( void )
{
pid_t pid;
if( (pid=fork()) < 0 )
{
fprintf(stderr, "main 1 fork err!\n");
return 0;
}
else if( pid == 0 )
{
if( (pid=fork()) < 0 )
{
fprintf(stderr, "第二次fork err!\n");
exit( -1 );
}
else if( pid > 0 )
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<signal.h>
int main( void )
{
pid_t pid;
if( (pid=fork()) < 0 )
{
fprintf(stderr, "main 1 fork err!\n");
return 0;
}
else if( pid == 0 )
{
if( (pid=fork()) < 0 )
{
fprintf(stderr, "第二次fork err!\n");
exit( -1 );
}
else if( pid > 0 )
{
fprintf( stderr, "子进程退出[%d]\n", getpid() );
exit( 0 );
}
fprintf( stderr, "孙子进程[%d]\n", getpid() );
while( 1 )
{
}
exit( 0 );
}
/* wait第一个子进程退出 */
waitpid( pid, NULL, 0 );
fprintf( stderr, "父进程[%d]\n", getpid() );
while( 1 )
{
}
exit(0);
}
第一次fork后:父进程、子进程
第二次fork后:子进程、孙子进程
第一次fork后父进程wait子进程,
第二次fork后子进程立即退出,使得孙子进程成为孤儿进程继续运行,同时也使得父进程wait完成结束进程挂起状态继续运行处理。
这样可以避免僵尸进程的产生,同时父进程和孙子进程可以同时运行处理业务,避免了资源等待的问题。
0 0
- 如何防止僵尸进程的产生之fork两次
- 两次fork防止僵尸进程
- 通过两次fork避免产生僵尸进程
- 如何防止僵尸进程的产生之信号
- fork两次如何避免僵尸进程
- fork两次如何避免僵尸进程
- fork两次如何避免僵尸进程收藏
- fork两次如何避免僵尸进程收藏
- fork两次如何避免僵尸进程
- fork两次如何避免僵尸进程收藏
- fork两次如何避免僵尸进程
- fork两次如何避免僵尸进程
- fork两次如何避免僵尸进程收藏
- fork两次如何避免僵尸进程
- fork两次如何避免僵尸进程收藏
- APUE之fork两次与僵尸进程的问题
- 防止僵尸进程的产生
- 为何要fork()两次来避免产生僵尸进程?
- WebConfig配置文件详解
- OpenCV_轮廓的查找、表达、绘制、特性及匹配
- Chilkat----开源网站之VS2010 CKMailMan一个非常好的邮件发送开源开发包
- Android Socket网络编程 TCP协议
- ECSHOP二次开发之给商品增加新字段
- 如何防止僵尸进程的产生之fork两次
- C#学习笔记第二篇之标识符、关键字、基本数据类型
- PAX工作记录
- XSS之xssprotect
- CRC16校验原理总结
- 谷歌字体(Google Font)初探 [翻译自Google官方文档]
- android 像素碰撞
- 扩展方法
- VC MFC工具栏(CToolBar)控件