当前位置: 技术问答>linux和unix
fork()的问题(急!!!!!!!!!!)
来源: 互联网 发布时间:2015-05-28
本文导语: 高手们: 我在编程时遇到了一个问题,就是在用fork()派生子进程的时候,每当子进程退出的时候主进程就会重新加载! 下面是我的fork代码: if( fork() == 0 ) { if( GetFrame( socket, buf, &out_...
高手们:
我在编程时遇到了一个问题,就是在用fork()派生子进程的时候,每当子进程退出的时候主进程就会重新加载!
下面是我的fork代码:
if( fork() == 0 )
{
if( GetFrame( socket, buf, &out_buf ) == 1 )//抓包函数
{
printf( "### Get Frame Success......n" );
send_msg_by_socket( socket, out_buf );
printf( "### Send out......n" );
}
else
{
printf( "### Get Frame Failure......n" );
printf( "### gbnj->Frame_End is: %dn", gbnj->Frame_End );
}
//alarm( 0 );
close( socket );
_exit( 0 );
}//end of if( fork )//Hmilzy
我已经在main()的开始屏蔽了SIGCHLD信号:
signal(SIGCHLD, SIG_IGN);
请高手们解答----高分感谢!!!!!!!!!
我在编程时遇到了一个问题,就是在用fork()派生子进程的时候,每当子进程退出的时候主进程就会重新加载!
下面是我的fork代码:
if( fork() == 0 )
{
if( GetFrame( socket, buf, &out_buf ) == 1 )//抓包函数
{
printf( "### Get Frame Success......n" );
send_msg_by_socket( socket, out_buf );
printf( "### Send out......n" );
}
else
{
printf( "### Get Frame Failure......n" );
printf( "### gbnj->Frame_End is: %dn", gbnj->Frame_End );
}
//alarm( 0 );
close( socket );
_exit( 0 );
}//end of if( fork )//Hmilzy
我已经在main()的开始屏蔽了SIGCHLD信号:
signal(SIGCHLD, SIG_IGN);
请高手们解答----高分感谢!!!!!!!!!
|
从新加载是什么意思?父进程退出有自动启动??
你是在什么系统下,solaris?linux?unix下的signal()屏蔽信号一次,然后就会恢复。linux下则是永久的
你是在什么系统下,solaris?linux?unix下的signal()屏蔽信号一次,然后就会恢复。linux下则是永久的
|
不懂楼主说的。加载?
|
IGN是永久的。
楼主交代清楚些。
楼主交代清楚些。
|
这段代码是不是在循环里?如果if语句执行多次,就会产生多个子进程。
|
把main函数全部代码贴出来看看