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. jQuery图片延迟加载插件jquery.lazyload.js

    在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...

  2. linux判断文件是否存在

    #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" # 这里的-x 参 ...

  3. javacript 组合使用构造函数模式和原型模式

    构造函数模式创建对象 基本方法 function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ al ...

  4. Android webView包装WebAPP

    前言 Android webView 兼容体验真的差到了极点!! 前一阵子,老板要讲 WebAPP 放到 Android 和 iOS 里面,而我因为以前做过安卓,所以这方面就由我来打包, 原理是很简单 ...

  5. 《.NET 设计规范》第 8 章:使用规范

    第 8 章:使用规范 8.1 数组 要在公共 API 中优先使用集合,避免使用数组. 不要使用只读的数组字段.虽然字段本身是只读的,用户不能修改它们,但用户可以修改数组中的元素. 考虑使用不规则数组, ...

  6. SQL explain详细结果

    explain 的结果 id select_type 查询的序列号 select_type simple (不含子查询) primary (含子查询.或者派生查询) subquery (非from子查 ...

  7. 使用locate 的正则查询 查找所有main.c

    locate支持正则查询的功能, 只需输入locate -r 正则表达式     即可. 现在我想查找所有main.c怎么做? 打开终端,输入shell: locate -r main.c$ PS:' ...

  8. java中自定义异常类

    hello,大家好,今天跟大家分享一下java中如何自定义异常,以后如果有新的心得,再添加,欢迎前辈指导... 首先,上Api,看一下异常和错误的父类: 然后,现在假设我有个循环(i=0;i<1 ...

  9. template.compile()方法

    template.compile(source, options) source:必传,渲染模板的内容. options:可选,通常不传.(其实是我还没研究明白) return:一个渲染函数. 示例如 ...

  10. 100、RESTful API

    本篇导航: RESTful RESTful API设计 基于django实现 基于Django Rest Framework框架实现 一.RESTful REST与技术无关,代表的是一种软件架构风格, ...