《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

相关文章

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT