zoukankan      html  css  js  c++  java
  • 如何产生信号

    1、通过终端按键产生信号

         在前台进程输入ctrl+c或者ctrl+/可以产生硬件中断。

    2、调用系统函数向进程发信号

    在shell命令下发送信号具体格式如下

    $ ./a.out &
    [1] 7940
    $ kill -SIGSEGV 7940
    $(再次回车)
    [1]+  Segmentation fault      (core dumped) ./a.out

    7940是a.out进程的id。之所以要再次回车才显示Segmentation fault,是因为在7940进程终止掉之前已经回到了Shell提示符等待用户输入下一条命令,Shell不希望Segmentation fault信息和用户的输入交错在一起,所以等用户输入命令之后才显示。指定某种信号的kill命令可以有多种写法,上面的命令还可以写成kill -SEGV 7940kill -11 7940,11是信号SIGSEGV的编号。以往遇到的段错误都是由非法内存访问产生的,而这个程序本身没错,给它发SIGSEGV也能产生段错误。

    3、软件本身产生中断

    比如由alarm函数产生的SIGALRM信号。

    #include <unistd.h>
    #include <stdio.h>
    
    int main(void)
    {
        int counter;
        alarm(1);
        for(counter=0; 1; counter++)
            printf("counter=%d ", counter);
        return 0;
    }
  • 相关阅读:
    [置顶] 怎么对待重复的代码
    AIX和Linux中wtmp的不同处理方式
    Visio 下载,及密钥
    全局变量和局部变量
    UNIX网络编程--IPV4 IPV6 ICMPV4 ICMPV6
    Android XML文档解析(一)——SAX解析
    rnqoj-30- [stupid]愚蠢的矿工-树形DP
    linux 文件内容的复制
    主流视音频平台参数
    FTP原理
  • 原文地址:https://www.cnblogs.com/pang1567/p/3649863.html
Copyright © 2011-2022 走看看