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

signal()函数捕捉信号问题,有程序

    来源: 互联网  发布时间:2015-11-12

    本文导语:  看一下程序,有那位高手能解释一下它的运行情况 #include  #include  #include  #include  static void sig_do(int signo); int main(void) { if(fork() == 0) { while(1) { sleep(2); printf("hellon"); } exit(0); } else { printf("waitting for ch...

看一下程序,有那位高手能解释一下它的运行情况

#include 
#include 
#include 
#include 


static void sig_do(int signo);

int main(void)
{

if(fork() == 0)
{
while(1)
{
sleep(2);
printf("hellon");
}
exit(0);
}
else
{
printf("waitting for child ....n");
signal(SIGCHLD, sig_do);
pause();
exit(0);
}


static void sig_do(int signo)
{

int status, i;
int pid,t_pid;
pid = wait(&status);
printf("exit childpid %dn", pid);

}

运行情况:

[root@jbnetwork Desktop]# ./signal
waitting for child ....
hello
hello
hello
hello
hello
hello
hello

另一个终端 [root@jbnetwork ~]# kill -STOP 3098  //向子程序发送暂停的信号
程序暂停不运行了
然后,[root@jbnetwork ~]# kill -CONT 3098  //向子程序发送继续运行的信号
[root@jbnetwork Desktop]# ./signal
waitting for child ....
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
程序又继续运行了

最后,[root@jbnetwork ~]# kill -KILL 3098  //向子程序发送强制杀死的信号

waitting for child ....
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
exit childpid 3098
exit childpid -1 // 这里我不能理解,按照结果的话,子程序结束的时候向父程序发送了两个信号
[1]+  已杀死               ./signal
[root@jbnetwork Desktop]#



|
可以,用waitpid(pid_t pid, int * static, int options),将options设为WNOHAND

    
 
 

您可能感兴趣的文章:

  • 请教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函数实例遇到的疑问
  • 为什么在gdb下无法用signal捕捉到信号?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 信号可靠还是不可靠,取决与信号本身还是signal()/sigaction()的区别?
  • 关于signal信号
  • 信号的"安全和不安全",仅仅是指signal()和sigaction()的区别么?
  • 如何将自定义的信号发给signal表记的进程?
  • ***************unix 系统中,信号量(signal)被屏蔽了,怎么开(是在命令行超作,不是在程序中)
  • 当进程处于socket读阻塞模式中,外部SIGNAL发生,此时信号相应响应函数可否进行socket写?
  • 自定义信号的signal用法问题
  • 信号函数signal的问题
  • linux signal 信号
  • 发送信号为什么出现User defined signal 1
  • java命名空间java.util.concurrent.locks接口condition的类成员方法: signal定义及介绍
  • signal 7和signal 11
  • 关于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()的问题
  • 在类中使用signal编译不通过
  • signal()基础知识,<<apue>>上的程序疑问
  • Program received signal SIGPIPE, Broken pipe. 这是什么回事?
  • 急急急!gdb下Program received signal SIGABRT, Aborted.是什么错误?
  • signal传参问题
  • Program received signal SIGSEGV
  • ulimit命令中的pending signal值。。


  • 站内导航:


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

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

    浙ICP备11055608号-3