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

子程序無法收到 ctrl+c 的信息 SIGINT !

    来源: 互联网  发布时间:2015-10-15

    本文导语:  father.cpp #include #include #include #include  void sig(int s) {    printf("father received signal %dn", s);    return;  } int main()  {         if (signal(SIGINT, sig) == SIG_ERR)     {                 printf("can't catch SIGINTn"...

father.cpp

#include
#include

#include
#include 
void sig(int s)
{
   printf("father received signal %dn", s);
   return; 
}

int main() 


   
   if (signal(SIGINT, sig) == SIG_ERR) 
   {
                printf("can't catch SIGINTn");
                exit(1);
   } 
   int pid=fork();
   if(pid==0)
   {
     execl("/root/child","child",(char*)0);
   } 
   while(1);

}
---------------------------------------------------
child.cpp

#include
#include
#include
#include 
void sig(int s)
{
   printf("child received signal %dn", s);
   return; 
}


int main()

{
 setpgrp(); // 自己成為進程組長
 if (signal(SIGINT, sig) == SIG_ERR) 
 {
     printf("can't catch SIGINTn");
     exit(1);
 } 
  while(1);
}

output:
[root@localhost root]# ./father
father received signal 2    -------> ctrl + c
father received signal 2    -------> ctrl + c
father received signal 2    -------> ctrl + c
father received signal 2    -------> ctrl + c
father received signal 2    -------> ctrl + c
father received signal 2    -------> ctrl + c

  SID  PGID   PID COMMAND
18808 18808 18808 bash    -------> bash 本身 pgid=18808
18808 19216 19216 father   -------> bash 產生新的 pgid=19216
18808 19217 19217 child    -------> 故意將 child pgid=19216變成19217 .

在同一session=18808 中, 為何 pgid=19217的child 沒收到 SIGINT ? 



緊急~~ 知道的說一下 ..




|
去掉这句话就可以setpgrp(); // 自己成為進程組長

|
你的这些数据怎么出来的?

 SID PGID PID COMMAND
18808 18808 18808 bash -------> bash 本身 pgid=18808
18808 19216 19216 father -------> bash 產生新的 pgid=19216
18808 19217 19217 child -------> 故意將 child pgid=19216變成19217 .


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SHELL 编程时要求用分模块编写各应用程序,然后由主菜单程序调用各子程序模块。主菜单如何调用子程序的呢?
  • 客户端终止,服务器子程序退出的问题。
  • linux下怎么做鼠标勾子程序?
  • 老师请进:关于getrlimit怎么结束子程序还有如何取得子进程占用的虚拟内存?
  • 求高手指点,中断服务子程序到底是个什么啊?
  • 如何创建一个文件(空的)?写个例子程序吧。
  • export 变量到子程序的问题
  • 急…Cygwin下编译含bool型C子程序为什么出错?
  • 请教:“外套”程序,控制子程序的运行
  • 支持多线程(多进程)的子程序(模块)应该具备哪些特点?
  • Oracle 子程序参数模式,IN,OUT,NOCOPY


  • 站内导航:


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

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

    Web服务器/前端 iis7站长之家