《UNIX环境高级编程》笔记--kill函数,raise函数,alarm函数,pause函数

2024-04-14 21:58

本文主要是介绍《UNIX环境高级编程》笔记--kill函数,raise函数,alarm函数,pause函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.kill函数和raise函数

kill函数将信号发送给进程或者进程组,raise函数则运行进程向自身发送信号。
#include <signal.h>
int kill(pid_t pid,int signo);
int raise(int signo);
//若成功,则返回0,出错则返回-1.
调用raise(signo);等价于调用kill(getpid(),signo);
kill的pid参数有4种不同的情况。
pid>0      将该信号发送给进程ID为pid的进程。
pid==0   将该信号发送给与发送进程属于同一进程组的所有进程(这些进程的进程组ID等于发送进程的进程组ID)而且发送
进程组具有向这些进程发送信号的权限。这边的所有进程不包含实现定义的系统进程集。
pid<0     将该信号发送给进程组ID等于pid的绝对值,而且发送进程组具有向其发送信号的权限,同样,所有进程集并不包含
某些系统进程。
pid==-1  将该信号发送给发送进程有权限向它们发送信号的系统上的所有进程。不包含某些系统进程。
超级用户可以将信号发送给任一进程,对于非超级用户,其基本规则是:发送者的实际或者有效用户ID必须等于接受者的实际
或者有效用户ID。
posix将编号为0的信号定义为空信号,如果signo参数为0,则kill仍执行正常的错误检查,但是不发送信号,这常被用来
确定一个特定进程是否仍旧存在。如果向一个并不存在的进程发送空信号,则kill返回-1,并将errno设置为ESRCH。

2.alarm和pause函数

使用alarm函数可以执行一个计时器,在将来某个指定的时间该计时器会超时。当计时器超时时,产生SIGALRM信号,如果不忽略
或捕捉此信号,则其默认动作是终止调用该alarm函数的进程。
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
返回值:0或者以前设置的闹钟的余留秒数。
其中,参数seconds的值是秒数,经过了指定的seconds后会产生信号SIGALRM。每个进程只能有一个闹钟,如果在调用alarm时,
以前已为该进程设置过闹钟,而且还没有超时,则将该闹钟时钟的余留值作为本次alarm函数调用的值返回。以前登记的闹钟时钟
则被新值代替。
pause函数使调用进程挂起直至捕捉到一个信号。
#include <unistd.h>
int pause(void); //返回值为-1,并将errno设置为EINTR。

这篇关于《UNIX环境高级编程》笔记--kill函数,raise函数,alarm函数,pause函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/904129

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C