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. CSS--使用方式

    创建CSS有三种方式: 外部样式表, 内部样式表和内联样式. 外部样式表 先建立外部样式表文件(.css),然后在网页文件的<head>内使用<link>链接.这种方式将样式文 ...

  2. 一、Html简介

    html什么东西呢? hypertext markup language(超文本标记语言).超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准, 它通过标记符号来标记要显示的网页中 ...

  3. Java为什么需要保留基本数据类型

    基本数据类型对以数值计算为主的应用程序来说是必不可少的. 自从1996年Java发布以来,基本数据类型就是Java语言的一部分.John Moore通过对使用基本类型和不使用基本类型做java基准测试 ...

  4. IDEA2017.3.3创建第一个javaweb项目及tomcat部署实战

    一.创建简单web项目 1. 选择jdk(这里有点小问题不是很理解,通过java -verbose查找出来的jdk路径在C盘,这里并不能识别,而我jdk安装的时候有自己的路径在D盘,导入后就是图中的j ...

  5. Shell 批量复制文件名相近的文件到指定文件名中

    问题: 目录结构如下: test/ 2001.01.01/   2001.02.02/   2001.03.02/ 2001.01.03/    2001.02.04/   2001.03.05/ 2 ...

  6. Core Animation 文档翻译 (第四篇)

    Core Animation 文档翻译(第四篇) 让Layer的content动画起来 核心动画的基础接口以及为拥有Layer的View做的动画扩展接口,使得为Layer制作复杂动画变得简单化.例如改 ...

  7. 什么是NAS.什么是黑白群晖?(转)

    前言               为了让更多的新人可以简单了解什么是nas,什么是黑群晖.什么是白群晖!有什么作用?特此制作以下教学!(原文为MOMO所写).图片也大体从互联网上下载.有对原作者不便之 ...

  8. JavaScript 基本语法 -- 运算符的优先级

    在所有的运算里,都是有运算顺序的.小时候学四则运算的时候,我们都知道这么一个规则:先乘除后加减,有括号要先算括号! 同样的,在JavaScript里面,运算符也是有相应的优先级的.其优先级如下表所示, ...

  9. Yii的Relational Active Record三张表连接查询

    需求如下: 查询book表信息,同时关联entitystags表,以entitystags的字段eid关联book的主键,再关联查询tags表,以entitystags表的tid字段关联tags表的主 ...

  10. 【ASP.NET Core】给路由规则命名有何用处

    上一篇中老周给伙伴们介绍了自定义视图搜索路径的方法,本篇咱们扯一下有关 URL 路径规则的名称问题.在扯今天的话题之前,先补充点东东.在上一篇中设置视图搜索路径时用到三个有序参数:{2}{1}{0}, ...