栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

Linux

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux

文章目录
  • 信号的发送函数
  • kill()函数
  • raise()函数
  • sigqueue()函数
  • alarm()函数

信号的发送函数

前面介绍了Linux中信号的一些基本情况,这里总结一下信号的发送。
信号的发送主要由函数kill()、raise()、sigqueue()、alarm()、settimer()、abort()来完成。

kill()函数

kill()函数用来发送信号给指定进程,在shell下输入man 2 kill可以获得其相关的函数原型:

#include 
#include 

int kill( pid_t pid, int sig );
  • 第一个参数是相应进程的ID
  • 第二个参数表示信号的编号
  • 函数执行成功返回0;发生错误返回-1,错误代码存入errno中
  • 只有具有root权限的进程才能向其他任一进程发送信号,非root权限的进程只能向属于同一个组或用户的进程发送信号

关于第一个参数,有如下注意:

  • pid为进程ID:发送信号给对应ID的进程
  • pid为0:发送信号给当前进程所属进程组中所有的进程
  • pid为-1:发送信号给系统内除过1号进程(init进程)和自身进程以外的所有进程
  • pid比-1小:发送信号给进程组(-pid)的所有进程
raise()函数

raise()函数是ANSI C而非POSIX标准定义的,可以用来给调用raise()函数的进程发送信号,在shell下输入man raise可获取其函数原型:

#include 

int raise( int sig );
  • 参数sig代表要发送信号的编号
  • 发送成功返回0,失败返回-1
sigqueue()函数

sigqueue()函数是一个比较新的发送信号函数,它与kill()函数发送信号时的创新在于,sigqueue()在发送信号的同时还支持携带参数,但sigqueue()不能给一组进程发送信号,在shell中输入man sigqueue可获取函数原型:

#include 

int sigqueue( pid_t pid, int sig, const union sigval value );
  • 参数value是一个共用体,其定义如下:
union sigval
{
	int sigval_int;
	void *sigval_ptr;
};
  • value可以携带的数据可以是整型或者是一个void型指针
  • 函数执行成功返回0,有错误时返回-1,错误代码存入errno中
alarm()函数

alarm()函数可以用来设置定时器,当定时器超时时,会发送SIGALRM信号给调用alarm()函数的进程,在shell下输入man alarm可获取函数原型:

#include 

unsigned int alarm( unsigned int seconds );
  • 调用alarm()函数只会发送一次信号
  • 参数seconds用来设置秒数,到达计时时间后向进程发送信号

对学习Linux中信号的发送,掌握这几种信号发送方法就足够了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号