linux kill命令信号,linux 捕获kill命令的信号 (SIGALRM)

linux中一共有32种信号,在/usr/include/bits/signum.h 头文件中可以看到

#define

SIGHUP

1

#define

SIGINT

2

#define

SIGQUIT

3

#define

SIGILL

4

#define

SIGTRAP

5

#define

SIGABRT

6

#define

SIGIOT

6

#define

SIGBUS

7

#define

SIGFPE

8

#define

SIGKILL

9

#define

SIGUSR1

10

#define

SIGSEGV

11

#define

SIGUSR2

12

#define

SIGPIPE

13

#define

SIGALRM

14

#define

SIGTERM

15

#define

SIGSTKFLT

16

#define

SIGCLD

SIGCHLD

#define

SIGCHLD

17

#define

SIGCONT

18

#define

SIGSTOP

19

#define

SIGTSTP

20

#define

SIGTTIN

21

#define

SIGTTOU

22

#define

SIGURG

23

#define

SIGXCPU

24

#define

SIGXFSZ

25

#define

SIGVTALRM

26

#define

SIGPROF

27

#define

SIGWINCH

28

#define

SIGPOLL

SIGIO

#define

SIGIO

29

#define

SIGPWR

30

#define

SIGSYS

31

#define

SIGUNUSED

31

其中SIGKILL(9)与SIGSTOP(19)是不能捕获的,常用的Ctrl+C 发出的是SIGKILL信号。

子进程退出时会向父进程发出SIGCHLD(17)信号,默认情况下它是被屏蔽的。

SIGSTOP与SIGCONT用来暂停和继续目标进程。

SIGABRT,SIGALRM,SIGFPE,SIGPIPE,SIGINT,SIGHUP,SIGILL,SIGQUIT,SIGSEGV,SIGTERM,SIGUSR1

,SIGUSR2这12种信号,如果在进程中没有对其进行捕获处理的话,进程在收到它们时,会终止,当然还有不可捕获的SIGKILL。

在终端中发送信号用kill命令,格式为 kill 信号 目标进程PID,例如要杀掉1000号进程可以

KILL -9 1000 或者 KILL -kill 1000

在程序中kill函数的原型为   int kill(pid_t pid, int

sig);

需要引入 和

killall CMD 与 kill  PID 默认发出的是SIGTERM信号。

在进程中需要等待某信号时,可以用pause()函数,前提是在pause调用前一定有对目标信号的捕获机制,这样在收到目标信号后,程序会继续运行。捕获信号最简单的是signal函数

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t

handler);

看着很复杂,用着很简单,第一个参数为目标信号,第二个参数为处理方法,可以是自定义的函数,也可以是

SIG_IGN或者SIG_DFL,前者表示目标信号将被忽略,后者将其恢复默认。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值