一、kill

kill : 给指定的进程法信号。
(1)头文件:

 #include <sys/types.h>#include <signal.h>

(2)函数原型:

int kill(pid_t pid, int sig);

(3)参数:
pdi > 0: 定向发送
pdi = 0 :同组所有进程
pdi = -1 :有权利发送的所有进程
pdi < -1 :指定组 id 内的所有进程(取反)
sig :发出的信号(建议写宏,不写数字)
(4)返回值:
成功: 0
失败:-1

二、raise

raise : 给自己发信号 。
函数原型:

int raise(int sig);

等价于 int kill(getpid(), int sig);

三、abort

abort :给自己发异常终止信号(SIGABRT / 6 号)并产生 core 文件。
函数原型:

void abort(void);

四、alarm

定时器alarm 函数:当时间到达之后,函数发出一个信号 :SIGALR(14)。
(1)函数原型:

unsigned int alarm(unsigned int seconds);

(2)参数:秒(多少秒后发出信号),取 0 代表取消闹钟。
(3)返回值:上一个定时还有多少时间发信号。
注意:
(1)使用的是自然定时法则(时间运行是绝对的,不受进程影响,比如进程卡顿,时间照走)。按照实际使用时间计量“用户使用时间 + 内核使用时间 + 损耗时间”。
(2)每个进程只能有一个定时器。

五、setitimer

setitimer 函数:实现周期式定时。
(1)函数原型:

int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);

(2)参数:
1)which:(定时法则 – 信号) 重点在于法则和信号的对应关系,为了知道该捕捉那个信号,详细如下:
ITIMER_REAL – SIGALRM :自然法则 “用户 + 内核 + 损耗”。
TIMER_VIRTUAL – SIGVTALRM : 按照“用户”计量。
ITIMER_PROF – SIGPROF :按照“用户 + 内核”计量。
2) struct itimerval * new_value:用于设置闹钟
首先认识 2 个结构体(嵌套关系)

struct itimerval // 外层结构体 -- 我们最终要用的{struct timeval it_interval; // 设置周期struct timeval it_value; // 设置第一次闹钟时间};
struct timeval // 内层结构体 -- 更精准的修饰时间(相加关系)
{time_t tv_sec; // sec 秒钟suseconds_t tv_usec; // usec 微秒 };

结构体使用方法:
例如

struct itimerval new_value = { {5, 300}, {2, 100} };//第一个定时器为 2 秒 100 微秒后,以后定时器时间间隔为 5 秒 300 微秒

3)struct itimerval *old_value:上一个定时器的属性,一般传 NULL。
整体使用:

struct itimerval new_value = { {5, 0}, {2, 0} };
setitimer( ITIMER_REAL, &new_value, NULL ); //采用自然法则,第一个闹钟为 2s 后,周期 5s

Linux学习之系统编程篇:与产生信号有关的函数相关推荐

  1. Linux学习之系统编程篇:单个线程的退出函数

    能否用 exit 来退出某个线程,exit 是用来退出进程的,因为父子线程共享同一地址空间,如果在某线程中使用,会使 所有线程全退出,因此需要使用别的函数 :pthread_exit (注意:子线程使 ...

  2. Linux学习之系统编程篇:与信号捕捉有关的函数(signal / sigaction)

    一.signal 函数 (1)原型: typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t h ...

  3. Linux学习之系统编程篇:与信号集有关的函数

    一.自定义信号集 (1)类型:sigset_t (本质是位图) (2)设置自定义信号集方法: sigset_t set; //创建一个自定义信号集sigemptyset(&set); //创建 ...

  4. Linux学习之系统编程篇: 阻塞信号集、未决信号集、自定义信号集

    阻塞信号集和未决信号集在内核 PCB 中,因此我们无法操作,但是可以操作自定义信号集,然后将其通过函数映射给阻塞信号集来间接操作. 信号集本质:位图(1-31 号)

  5. Linux学习之系统编程篇:ps 和 kill 命令以及父子进程间数据共享模式

    一.ps 和 kill 命令 1.ps 命令 常用方式: ps aux :查看正在运行进程信息(主要查 pid). ps ajx :更加详细(PID. PPID:父进程 id. PGID:进程组 id ...

  6. Linux学习之系统编程篇:对线程的基本认识

    (1)fork()后创建的子进程是父进程的拷贝,那么pthread_create,创建线程,创建的线程跟原进程有什么关系呢? fork 会通过拷贝产生新的虚拟地址空间(PCB 会变化),而 pthre ...

  7. Linux学习之系统编程篇:编写一个守护进程

    需求:写一个守护进程,每隔 2s 获取一次系统时间,将这个时间写入到磁盘文件 #include <stdio.h> #include <stdlib.h> #include & ...

  8. Linux学习之系统编程篇:守护进程(精灵进程、后台进程)

    一.背景 一般情况下,启动终端(shell),系统会创建一个会话(shell 进程是会长),经过后续各种操作,该会话中会存在多个进程组,每个进程组中也会有多个进程(父进程是组长),若此时关闭 shel ...

  9. Linux学习之系统编程篇:shm 共享内存及其操作函数

    一.shm 和 mmap 的区别 (1)mmap 是在磁盘上建立一个文件,每个进程地址空间中开辟出一块空间进行映射.shm 每个进程最终会映射到同一块物理内存.shm 保存在物理内存,这样读写的速度最 ...

  10. Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建

    一.IPC 概念 IPC: 进程间通信. 进程间通信的常见的 4 中方式: (1)管道 pipe fifo :最简单(但只能在有血缘关系下进行). (2)信号 signal : 属于系统的,所以系统开 ...

最新文章

  1. centos 安装 aria2 webui 实现网页下载
  2. 通过sqlserver日志恢复误删除的数据
  3. Spring Cloud构建微服务架构:服务消费(Ribbon)【Dalston版】
  4. 故乡与文学:一场别开生面的跨年代文学对话(一)
  5. python异常值处理实例_利用Python进行异常值分析实例代码
  6. 《深度学习笔记》——训练加速篇
  7. 想要实现自动驾驶?高精度地图不可或缺
  8. 计算机专业的英语文献,计算机专业英语论文参考文献集 计算机专业英语英语参考文献哪里找...
  9. lesson 6 threads synchronization
  10. 山西特岗考试计算机专业真题,山西特岗教师招聘考试模拟题_信息技术选择题...
  11. 西安理工大学计算机视觉与应用,赵明华 - 西安理工大学 - 计算机科学与工程学院...
  12. word下禁止显示回车符号
  13. java计算机毕业设计驾校管理系统源码+mysql数据库+系统+lw文档+部署
  14. HTML---网页编程(2)
  15. W3C 验证的是是非非
  16. 谷粒商城高级篇(36)——商品上架之上传数据到Elasticsearch
  17. windows 提示缺少VCRUNTIME140.dll错误
  18. LOG的含义 : Mysql 之 binlog介绍
  19. 计算机开启时提示键盘错误,进入BIOS自检找不到键盘提示Keyboard error怎么办
  20. 小米手机系统脚本上传服务器文件夹,小米手机与电脑可以高速传文件?看看这些你也许会明白-红米手机怎么连接电脑...

热门文章

  1. 虚拟机中Ubuntu不能联网----
  2. 论NLP领域的内卷:我配不配找工作?
  3. ACL 2021 | 复旦大学邱锡鹏组:面向不同NER子任务的统一生成框架
  4. 如何使用知识图谱增强信息检索模型?
  5. ICCV 2019 开源论文 | ShapeMatchingGAN:打造炫酷动态的艺术字
  6. 来自闪闪宝石的光芒 - “宝石迷阵” x 信息检索 | 论文访谈间 #20
  7. POJ2823 Sliding Window【单调队列】【线段树】【ST表】
  8. 查看redis版本_redis详细介绍
  9. Mybatsi注解开发-基础操作
  10. ajax请求返回json实例,Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据