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

Linux 收到信号11后,在程序退出处理时再次收到信号11,假死问题

    来源: 互联网  发布时间:2017-05-23

    本文导语:  本帖最后由 zhxingway 于 2014-07-09 21:00:26 编辑 程序在后处理函数中再次出现信号11,导致进程假死,只能使用kill -9 pid 来结束进程。。 请问是不是程序在收到A信号,作退出处理时,如果再次收到A信号,则会处于假...

本帖最后由 zhxingway 于 2014-07-09 21:00:26 编辑
程序在后处理函数中再次出现信号11,导致进程假死,只能使用kill -9 pid 来结束进程。。


请问是不是程序在收到A信号,作退出处理时,如果再次收到A信号,则会处于假死?能否在收到信号时忽略后处理中的错误而强行退出?

因为这时,还可以接收其它信号,但是程序并不能退出。

注:信号11表示 非法内存访问。

|
我的实验里,如果在11的处理函数中再次产生错误,就会直接被系统杀死。

$ ./main
Got signal 11
Segmentation fault (core dumped)

#include 
#include 
#include 

static void show_handler(int s)
{
    printf("Got signal %dn", s);
    *(char *)0 = 1;
}

int main()
{
    struct sigaction newhandler, oldhandler;
    sigset_t blocked;

    newhandler.sa_handler = show_handler;
    sigemptyset(&newhandler.sa_mask);
    newhandler.sa_flags = 0;

    if (sigaction(SIGSEGV, &newhandler, &oldhandler) != 0) {
        perror("sigaction");
        return;
    }
    *(char *)0 = 1;
    while (1) {
        sleep(1);
    }
}

|
SIGSEGV's default action is terminate+core, if your program hung up, then it's probably something else. 

One possibility is: did it occur on the child process and then the main process hung or vice versa?

|
consider this scenario:

parent process is waiting for child to repsond, say waiting for reading data from child. parent is blocked and in sleep (Uninterruptible sleep, which means it can't handle signal and that's why you have to kill -9). Then child crashed. So OS inherits child as zombie and wait for parent to call waitpid, but it will never happen since parent is blocked...

but for your program, I have no idea what happened...

    
 
 

您可能感兴趣的文章:

  • 学习linux的新手问:linux进程信号掩码以及信号阻塞与信号未决怎么理解?
  • linux 中信号量的使用 当信号初始化的时候设置的值大于1将是如何?
  • 【求助】linux/Unix下创建子进程,向父进程发送信号,子进程也能收到改信号,此时如何让子进程不收到信号
  • Linux下的信号忽略和信号阻塞是什么意思
  • 请高手指教 linux 信号处理问题
  • linux 信号中断
  • linux 信号 按什么键能发SIGCONT 信号??
  • linux的信号处理函数中如何访问共享资源
  • linux中 关于 进程和信号的问题
  • 如何使用命令行删除Linux下的POSIX有名信号灯
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • 关于linux内核中信号处理的问题?(信号处理的时间)
  • linux多线程信号问题
  • linux下面的信号都已经是"可靠信号"了吗,已经没有了不可靠信号?
  • linux 只有SIGUSR1和SIGUSR2,如果有多个应用程序需要信号,怎么办?
  • 在linux下怎么使用信号量?
  • 关于Linux下的信号量
  • Linux,aix,windows下可以查询非本进程的信号处理函数吗?
  • linux 下信号机制问题
  • 请问那些linux信号是不能捕捉的?
  • 谁有收到ORACLE 的免费LINUX光盘,知道怎么用吗?
  • 在linux系统下无法收到mail问题请教
  • [求助]LINUX下的MAIL系统,发出的邮件别人能收到,但别人发过来的邮件这个系统总是收不到。。。。。。。
  • 求linux里的tcpdump命令,写一个监听15717端口收到和发出去的所有包
  • 紧急,我的linux、qmail、vpopmail一直用了两年,今天突然发现邮件发出去对方收不到,但可以收到其它地方发过来的邮件,在同一服务器上的
  • linux下netfilter中在PRE_ROUTING点收到的sk_buff内容为什么始终为空
  • linux下怪异串口编程问题,必须先启动一次minicom后程序才能收到数据
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux系统运行php几分钟后出现假死情况请问需要设置什么地方?
  • 如何解决linux假死机制问题?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


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

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

    浙ICP备11055608号-3