当前位置:  技术问答>linux和unix

为何signal 在函数处理没有打印设置的输出消息!

    来源: 互联网  发布时间:2016-04-28

    本文导语:  如题:红色部分为标记关键部分,后面有问题 整个函数是让父进程fork N个子进程,然后输 出子进程的状态,在子进程结束时提示(signal截取)  /*solution for  8_10 */ #include #include #include #include void child_hander (int ...

如题:红色部分为标记关键部分,后面有问题
整个函数是让父进程fork N个子进程,然后输
出子进程的状态,在子进程结束时提示(signal截取) 
/*solution for  8_10 */

#include
#include
#include
#include

void child_hander (int ) ;
void parent_hander (int  ) ; 
void sig_hander( int  ) ; 


int main ( int argc , char **argv ) 
{

int  n , i ; 
int  pid ; 
if ( argc != 2 ) 
{
fprintf( stderr ," usage: %s  n n" , argv[0] ) ;
exit ( 1 ) ; 
}

if ( !(n = atoi ( argv[1] ) )) 
{
fprintf(stderr, " The number of fork() is ZERO n");
exit ( 1 ) ; 
}

for ( i = 0 ; i  8 ;
low_7 = status & 0x7f ; 
bit_7 = status &0x80 ; 
printf ("status : exit =%d , sig = %d , core = %d n " , hig_8 , low_7 , bit_7 ) ;
}

void sig_hander(int   sig_id ) 
{
printf (" SIGCHLD  comming ...n" ) ; 
}


[root@localhost solutions]# ./8_10  3  
child  5485 here , will slep for  0 seconds
 my pid is : 5484
status : exit =17 , sig = 0 , core = 0           为什么第一次没有SIGCHLD  comming ...
 child  5486 here , will slep for  1 seconds
 my pid is : 5484
 waiting ...
 SIGCHLD  comming ...
status : exit =17 , sig = 0 , core = 0
 child  5487 here , will slep for  2 seconds
 my pid is : 5484
 waiting ...
waiting ...
 SIGCHLD  comming ...
status : exit =17 , sig = 0 , core = 0

|
首先 你代码有错误

 34         else if ( pid ==0 )
 35             child_hander ( i ) ;

应该是i 不是 5

其次 不要把signal ( SIGCHLD , sig_hander ) ; 放分支函数  
放主函数吧 你的第一个子进程退出的时候  父进程还没有安装好handler 你让他咋捕获信号

最后 代码很难看 不好的风格 wait最好是用在 sig_handler里面

over

    
 
 

您可能感兴趣的文章:

  • 请教signal函数的用法!
  • signal函数定义该怎么理解?
  • 请问有没头函数<pthread.h>和<signal.h>里的函数的详细功能介绍?和使用方法???
  • 关于signal函数
  • 关于系统信号处理函数signal()的疑问.
  • signal的处理函数问题
  • 关于signal函数的问题
  • signal函数的定义问题?搞不懂.
  • signal函数使用出问题?
  • signal 函数请教
  • 关于signal函数的问题,大家帮我看看
  • 关于linux下的signal函数的问题
  • 在signal指定的处理函数中如何传进去一个值?
  • 向各位求助:关于signal函数
  • REDHAT LINUX 9中如何使用signal这个函数进行中断通信?
  • 谁能给我解释一下SIGNAL这个函数呀?
  • signal处理函数中的文件操作问题
  • 请问:signal(), sigaction()函数会不会使自已所有的进程挂起啊,(这样就等接收各种信号,进行一些处理工作啊)
  • 谁给解释下这个signal函数
  • linux中信号signal函数实例遇到的疑问
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util.concurrent.locks接口condition的类成员方法: signal定义及介绍
  • signal 7和signal 11
  • 关于signal信号
  • 关于signal返回值是什么?
  • pending signal
  • 关于Linux驱动中signal的使用
  • about "signal"
  • 有关signal handler,请教!
  • signal handler 问题
  • signal的疑惑
  • 关于signal ()
  • signal和sigaction区别
  • PPP问题fatal signal 11
  • C/C++语言问题:(void) signal(SIGPIPE, pstat); 是什么意思?
  • alarm() 和 signal()的问题
  • ***************unix 系统中,信号量(signal)被屏蔽了,怎么开(是在命令行超作,不是在程序中)
  • 在类中使用signal编译不通过
  • signal()基础知识,<<apue>>上的程序疑问
  • Program received signal SIGPIPE, Broken pipe. 这是什么回事?
  • 如何将自定义的信号发给signal表记的进程?
  • 急急急!gdb下Program received signal SIGABRT, Aborted.是什么错误?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3