定义:

int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);

表头文件:

#include<signal.h>

说明:

sigaction()会依参数signum指定的信号编号来设置该信号的处理函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。

如参数结构sigaction定义如下

struct sigaction

{

void (*sa_handler) (int);

sigset_t sa_mask;

int sa_flags;

void (*sa_restorer) (void);

}

sa_handler: 函数指针,指定当信号到来时由哪个函数来处理,函数原型为 void foo(int);

sa_mask: 临时屏蔽字,在处理信号时,屏蔽哪些信号。

sa_flags 用来设置信号处理的其他相关操作, 可设置为0

返回值:

执行成功则返回0, 如果有错误则返回-1。

示例:

#include <stdio.h>
#include <unistd.h>
#include <signal.h> void recv_sig(int num)
{
int n = ;
printf("I have received a signal\n");
while(n--) {
printf("num = %d\n", num);
sleep();
}
} int main()
{
struct sigaction act;
act.sa_handler = recv_sig;
sigemptyset(&act.sa_mask);
// 当处理SIGUSR1信号时,暂时屏蔽SIGQUIT信号
sigaddset(&act.sa_mask, SIGQUIT);
act.sa_flags = ; sigaction(SIGUSR1, &act, NULL); while() {
printf("*************\n");
sleep();
}
return ;
}

运行结果:

yongdaimi@iMac:~/Documents/code$ ./app
*************
*************
*************
*************
*************
*************
*************
*************
*************
*************
*************
*************
*************
*************
*************
I have received a signal
num = 10
num = 10
num = 10
^\num = 10
num = 10
退出 (核心已转储)

最新文章

  1. UI控件(UITextField)
  2. C#语言——类
  3. 客户端访问AIDLService(远程绑定Service)
  4. 面试题之spring
  5. NBearV3中文教程总目录
  6. Hive学习之二 《Hive的安装之自定义mysql数据库》
  7. 查看SQLServer 代理作业的历史信息
  8. 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
  9. jquery 操作服务端控件,select 控件
  10. shell之数组和关联数组
  11. 不使用Visual Studio开发ASP.NET MVC应用(下篇)
  12. Linux笔记-top命令和load average
  13. [ 高危 ] my存在sql注入
  14. 抓取epsg.io的内容
  15. 洛谷 P2054 [AHOI2005]洗牌
  16. webpack(3)--Output
  17. Matlab 调用Oracle数据库
  18. POJ 3304 Segments 基础线段交判断
  19. 使用范围for语句处理多维数组
  20. JDBC(1)简单介绍/数据库的连接

热门文章

  1. 优化png图片的历程
  2. Unity的shader学习1
  3. [Ubuntu]明明白白安装中文字体
  4. vmwareubuntu18.04网络配置
  5. Ubuntu 中/etc/resolv.conf 文件修改丢失的解决方案
  6. 如何判断linux用户是否为root用户
  7. Linux 安装tomcat 及过程中遇到的问题
  8. UNIX网络编程读书笔记:shutdown函数
  9. UNIX网络编程读书笔记:地址操纵函数
  10. FileUpload类中FileUpload1.FileName和FileUpload1.PostedFile.FileName的区别