《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

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更