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

【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号

    来源: 互联网  发布时间:2016-12-15

    本文导语:  大致代码为: pid_t pid = fork(); if (0 == pid) // child process {     execvp ...; } 当向父进程发送如SIGINT信号时,子进程也收到了SIGINT信号。 问题:如何做到向父进程发送如SIGINT信号时,子进程不收到SIGINT信号? 求解...

大致代码为:
pid_t pid = fork();

if (0 == pid) // child process
{
    execvp ...;
}

当向父进程发送如SIGINT信号时,子进程也收到了SIGINT信号。
问题:如何做到向父进程发送如SIGINT信号时,子进程不收到SIGINT信号?
求解答!!! 先谢谢了!!!

|
既然不阻塞,那么就将父子进程放到不同的进程组中去吧。


/* main.c */

#include 
#include 
#include 
#include 
#include 

static void sig_int(int);

int main(int argc, char *argv[])
{
        signal(SIGINT, sig_int);

        if (fork() == 0) {
                if (fork() == 0) {
                        while (1) {
                                printf("pid: %ldn", (long)getpid());
                                sleep(1);
                        }
                }
                exit(0);
        }

        wait(0);
        pause();
}

static void sig_int(int signo)
{
        printf("pid: %ld caught SIGINT", (long)getpid());
}


|
把不想接受的信号屏蔽了,但不是所有信号都可以屏蔽的,试试sigprocmask

|
考虑了下,还是不能在子进程里来阻塞,在fork后调度到子进程中进行sigprocmask有一个时间窗口。


        sigset_t blockmask, oldmask;
        sigemptyset(&blockmask);
        sigaddset(&blockmask, SIGINT); 
        sigprocmask(SIG_BLOCK, &blockmask, &oldmask);  // 父进程里阻塞

        pid_t child = fork();
        if (child 

    
 
 

您可能感兴趣的文章:

  • 我想让vfork后就execl一进程,同时让execl出来的进程之间能相互通信,求助
  • 求助:信号 --13 进程中断
  • 【求助】多进程中 内核信号量无效?
  • 关于僵死进程,求助
  • 新人求助,进程调度的问题.
  • 求助 linux进程管理
  • linux下进程并发问题。急!!!求助!!!
  • 菜鸟求助, Linux进程的问题
  • 紧急求助,关于kill进程 , 大家帮帮忙啊 !!!
  • [求助]查看监听端口所属进程问题
  • 求助:怎样获得freebsd中的进程pid?
  • ■■求助■■ 如何查看一个进程拥有的线程数量???
  • 求助: 进程调度内核分析
  • 求助(SHELL 脚本)进程的唯一性检查
  • [求助]popen 函数引起 shell 调用, sh 成为僵尸进程.
  • 求助:父进程被kill掉以后,子进程在任务表中所占内存是怎样释放的?
  • 求助:AIX5L,如何得到被某个进程打开的文件名称?
  • [求助]在hp-unix如何删除本进程的环境变量。
  • 求助:在什么情况下需要用到进程编程?谢谢!
  • 内核与用户进程通信得问题,求助!
  • 求助一些关于信号量的问题
  • 无线网卡如果指定接收了一个AP发出的信号(通过指定ESSID),能同时接受到另一个AP发出的信号么?50分求助
  • *** 求助!!! 关于(可靠)信号处理的问题 ***
  • [求助]如何让阻塞的信号量、recvfrom退出?
  • 求助啊,信号方面的问题
  • 想在LINUX下读取802.11网卡的信号强弱信息,以作为切换的依据,有做过的么?50分求助
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 求助啊~ 关于信号的。。。。。。。。。
  • 紧急求助:关于线程中接收alarm信号的问题
  • 求助:linux信号处理的默认函数宏定义怎么理解呢?
  • 求助sigaction中sa_mask设置阻塞信号的问题!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 怎样读取HZK24S前十区的内容啊???求助求助
  • 紧急求助!紧急求助!
  • 【求助】iplanet问题,求助高手解答!
  • 菜鸟求助,solaris下计算问题求助
  • 【求助】SOS紧急求助..............极为简单的问题...跪求....
  • 高分求助啊!求助SUSE 10.0 不能上网.
  • 急急急急急急急啊,紧急求助啊!!!!!满分求助啊!!!!!!
  • 求助:linux下 vim的配置(高分求助)
  • red hat怎么安装gcc啊!总是出错,求助求助啊!!!yum源怎么改啊!!
  • 求助~~求助 ~~linux文件读写问题
  • 求助,安装了红帽子后进不了
  • 新装linux求助
  • linux的 iptables问题求助
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 一个简单的问题,高分求助!!!
  • 紧急求助:Unix下给文件夹重命名用什么命令?谢谢!!!!
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求助
  • 紧急求助java多线程编程!!!!!!!!!!!!!


  • 站内导航:


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

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

    浙ICP备11055608号-3