进程通信-2

进程通信-2

信号

信号名称

非捕获就停止进程的信号

信号名称说明
SIGABORT进程异常终止
SIGALRM超时警告
SIGFPE浮点运算异常
SIGHUP链接挂断
SIGILL非法指令
SIGINT终端中断
SIGKILL终止进程(无法被捕获或者忽略)
SIGPIPE向无读进程的管道写数据
SIGQUIT终端退出
SIGSEGV无效内存段访问
SIGTERM终止
SIGUSR1用户定义信号1
SIGUSR2用户定义信号2

其余信号

信号名称说明
SIGCHID子进程已经停止或退出
SIGCONT继续执行暂停的进程
SIGSTOP停止执行(无法被捕获或者忽略)
SIGSTEP终端挂起
SIGTTIN后台进程尝试读操作
SIGTTOU后台进程尝试写操作

相关函数

signal

定义

#include<signal.h>
typedef void (*Fun(int))
Fun signal(int sig,Fun func)

参数

  • Fun:一个函数指针(我自己定义的,有利于阅读)
  • sig:准备捕获的信号由sig给出
  • func:接收到信号后调用的参数由func给出,func可以为SIG_IGN-忽略信号,SIG_DFL-回复默认行为

作用

  • 改变信号的处理方式
kill

定义

#include<sys/types.h>
#include<signal.h>
int kill(pid_t pid,int sig);

参数

  • pid:发送进程的pid
  • sig:发送的信号

作用

  • 向进程发送信号
alarm

定义

unsigned int alarm(unsigned int second);

作用

  • second秒后安排发送一个SIGALRM信号
pause

定义

#include<unistd.h>
int pause(void);

作用

  • 将程序挂起直到有一个信号出现为止

健壮的信号接口

定义

#include<signal.h>
int sigaction(int sig,const sigaction * act,struct sigaction * oact);

sigaction定义

struct sigaction
{
    void (*) (int)  sa_handler;//信号对应的响应函数
    sigset_t sa_mask;//系统在调用响应函数之前阻塞的信号
    int sa_flags;//关于信号的选项
};

作用

  • 设置信号sig关联动作,如果oact不是空的话,则返回原来的信号动作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值