body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0;} th{border: 1px solid gray; padding: 4px; background-color: #DDD;} td{border: 1px solid gray; padding: 4px;} tr:nth-child(2n){background-color: #f8f8f8;} kill    -1 查看所有信号列表

man  7  signal  主要查看信号行为

信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。个地方:

l ;由像用户击键这样的进程外部事件产生的信号叫做异步信号(asynchronoussignals)。

  进程接收到信号以后,可以有如下3种选择进行处理:

l 号信号;

l 个参数个参数是个,否则返回-1

sigaction也用于,否则返回-1

结构体 struct sigaction 、、、;否则应该让 sa_sigaction 指向正确的信号处理函数,并且让字段sa_flags包含SA_SIGINFO选项

4、字段sa_mask是一个包含信号集合的结构体,;不在,则返回0;出错时返回-1,者之一:

a:SIG_BLOCK ,将参数2的信号集合添加到进程原有的阻塞信号集合中

b:SIG_UNBLOCK ,从进程原有的阻塞信号集合移除参数2中包含的信号

c:SIG_SETMASK,的信号集

参数set   为阻塞信号集

参数oldset   是传出参数,存放进程原有的信号集,通常为NULL

,否则为-1。

个计时器,分别是秒,在内核态运行了6秒,还睡眠了7秒,则真实计算器计算的结果是18秒,虚拟计时器计算的是5秒,实用计时器计算的是11秒。

用指定的初始间隔和重复间隔时间为进程设定好一个个计时器发送的时钟信号分别为:SIGALRM , SIGVTALRM 和 SIGPROF 。

,否则-1

2int setitimer(int which, const structitimerval *value, struct itimerval *ovalue);                  ,否则-1

struct  itimerval 
{
   struct timeval   it_interval;     /* next value */         //重复间隔
   struct timeval   it_value;        /* current value */      //初始间隔
};
//初始间隔就是隔多少秒,发送SIGALRM信号;重复间隔就是以后每隔多少时间再发送SIGALRM信号
struct  timeval 
{
           long tv_sec;   /* seconds */         //时间的秒数部分
           long tv_usec;  /* microseconds */    //时间的微秒部分 
};

setitimer.c     //启用真实计时器的进行时钟处理(获得当前系统时间,并一秒更新一次)
#include<sys/time.h>
#include<signal.h>
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
void sig_handle(int sig)
{
        time_t t;
        time(&t);  //取当前秒数;
        struct tm* p=gmtime(&t);  //ctime();很简单,这里就不用了;用的格林威治时间;
        printf("%2d:%2d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);
}
int main()
{
        signal(SIGALRM,sig_handle); 
        kill(0,SIGALRM);   //为了设定timer之前,就发一个SIGALRM信号打印时间,看看后面是不是间隔5秒发送SIGALRM信号,我们可以用kill来发送,当前运行程序的窗口id就是0;
        //sig_handle(0);   //参数随便传
        struct itimerval rt;
        memset(&rt,0,sizeof(rt));  //这里全部赋0,后面就不用设置微妙0了;
        rt.it_value.tv_sec=5;
        rt.it_interval.tv_sec=2;   //设置初始间隔和重复间隔,微秒我们也感应不出来,就不设置了;也可以设置为0 ;
        int ret=setitimer(ITIMER_REAL,&rt,NULL);
        if(-1==ret)
        {
                perror("setitimer");
                return -1;
        }
        while(1);
        return 0;
}


LINUX signal 信号的更多相关文章

  1. linux signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTRAP、SIGABRT...........................)

    SIGHUP /* hangup */       ~~~~~~      SIGHUP,hong up ,挂断.本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知 ...

  2. linux下 signal信号机制的透彻分析与各种实例讲解

    转自:http://blog.sina.com.cn/s/blog_636a55070101vs2d.html 转自:http://blog.csdn.net/tiany524/article/det ...

  3. linux信号Linux下Signal信号太详细了,终于找到了

    linux信号Linux下Signal信号太详细了,终于找到了 http://www.cppblog.com/sleepwom/archive/2010/12/27/137564.html

  4. Linux signal 那些事儿(4)信号的deliver顺序【转】

    转自:http://blog.chinaunix.net/uid-24774106-id-4084864.html 上一篇博文提到了,如果同时有多个不同的信号处于挂起状态,kernel如何选择deli ...

  5. Linux 进程间通信 信号(signal)

    1. 概念: 1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式 2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件. 3)如果 ...

  6. C语言编程技巧-signal(信号)[转]

    自 http://www.uml.org.cn/c++/200812083.asp 信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用 ...

  7. linux signal 用法和注意事项

    http://blog.chinaunix.net/uid-9354-id-2425031.html 所以希望能用相同方式处理信号的多次出现,最好用sigaction.信号只出现并处理一次,可以用si ...

  8. Linux进程间通信——信号集函数

    一.什么是信号 用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中 ...

  9. linux signal 处理

    v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VM ...

随机推荐

  1. intellij-添加文档注释模板

    file-->setting-->Editor-->File and Code Templates-->FileHeader

  2. linux中操作java进程

    通过 ps -ef|grep java 来得到真正运行的线程 通过kill -9 XXXXX来杀死正在运行的线程,其中XXXXX是上面java线程的序号. 另外还有2个指令我也不熟悉,一个是cat,一 ...

  3. 输入和输出--IO流

    JavaIO流 首先要理解这个"流"(stream)字:Java把不同的输入,输出源抽象成为流,通过流的方式允许Java程序使用相同的方式来访问不同的输入,输出源.把这里的&quo ...

  4. Java集合分析

    Java集合分析 前言 从开始接触Java的时候, 就在强调的一个重要版块, 集合. 终于能够开始对它的源码进行分析, 理解, 如果不懂得背后的思想, 那么读懂代码, 也仅仅是读懂了 if else ...

  5. PHP如何读取json数据

    1的 <?php $json = '{"a":1,"b":2,"c":3,"d":4,"e": ...

  6. Base64图片编码优化

    通过对图片进行base64编码,将base64(或其他数据)内嵌在image标签的属性当中(或者CSS中或JavaScript中),可以实现将图片直接嵌入代码中的目的,如此一来,可以减少HTTP请求, ...

  7. linux监控下几个系统工具

    1.top 2.htop(yum install -y htop) 3.glances(yum install -y glances) 4.dstat -l -c -m -d  -r -n --top ...

  8. oracle pl/sql中的循环及if语句

    for循环 /* for循环打印1到10 */ set serveroutput on; declare begin .. loop dbms_output.put_line(i); end loop ...

  9. 初码-Azure系列-存储队列的使用与一个Azure小工具(蓝天助手)

    初码Azure系列文章目录 将消息队列技术模型简化,并打造成更适合互联网+与敏捷开发的云服务模式,好像已经是行业趋势,阿里云也在推荐使用消息服务(HTTP协议为主)而来替代消息队列(TCP协议.MQT ...

  10. Animations and transitions

    在交互式可视化中,有一个词叫reactive,指的是以可视化的方式来响应用户的行为,帮助用户进行可视化并理解其结果.这个很有用.那如何来实现这种交互呢?通过动画. 如果处理得当,动画可以展现出不错的可 ...