Linux Signal (2): signal函数

原创 2007年09月14日 14:43:00

1. 原型:

#include <signal.h>
void (*signal(int signo, void (*func)(int))(int);

成功则返回该信号以前的处理配置, 出错则返回SIG_ERR.

参数说明:

  • signo: 信号名, 如SIGINT.
  • func: 对应signo的信号处理函数的函数名, 这个函数没有返回值, 有一个整型参数, 这是捕捉的情况, 当然也可以是以下两种宏:
    • SIG_IGN: 忽略.
    • SIG_DFL: 默认动作.

2. 改写原型:

typedef void (*sigfunc)(int);

sigfunc 
*signal(int, sigfunc);

 

3. 三个宏定义:

#define SIG_ERR (void (*)()) -1 // 错误编号

#define SIG_DFL (void (*)()) 0  // 默认动作编号

#define SIG_IGN (void (*)()) 1  // 忽略编号

4. kill命令:

在shell里面执行kill命令可以向进程发送信号:

kill -USR1 7216 ;向pid为7216的进程发送SIGUSR1信号.

kill 7216       ;向pid为7216的进程发送SIGTERM信号.

5. 注意事项:

exec函数执行后, 把该进程所有信号设为默认动作.

exec函数执行后, 把原先要捕捉的信号设为默认, 其他不变.

fork之后, 子进程继承父进程的信号处理方式.

Signal ()函数详细介绍 Linux函数

signal()函数理解 在 这个头文件中。 signal(参数1,参数2); 参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义...
  • ta893115871
  • ta893115871
  • 2012年04月18日 20:27
  • 79033

linux中的信号处理(signal和alarm)

信号是unix中所使用的进程通信的一种最古老的方法.系统使用它来同志一个或多个进程异步事件的发生.linux系统库bits/signum.h对信号名作了定义:linux的大多数信号是提供给内核的,仅有...
  • sambian
  • sambian
  • 2006年04月30日 16:04
  • 33416

【Linux函数】Signal ()函数详细介绍

1. 功能设置某一信号的对应动作2. 声明#include typedef void (*sighandler_t)(int); sighandler_t signal(int signum, si...
  • yockie
  • yockie
  • 2016年06月21日 19:49
  • 14623

linux signal 处理

源地址:http://blog.csdn.net/zhuixundelang/article/details/5979465 linuxsignal 处理   说明: 本文主要翻译自UL...
  • fz_ywj
  • fz_ywj
  • 2013年06月18日 22:13
  • 21778

Linux Signal (1): 基本概念

1. 信号是软件中断:信号提供了一种处理异步事件的方法. 每个信号都有一个名字, 他们以SIG开头, 如SIGALRM是闹钟信号, 当由alarm函数设置的计时器超时后产生此信号, 然后由SIGALR...
  • dai_weitao
  • dai_weitao
  • 2007年09月14日 10:51
  • 5088

linux c之信号signal处理机制

最近同事的程序设计过程中用到了Linux的signal机制,从而引发了我对Linux中signal机制的思考。Signal机制在Linux中是一个非常常用的进程间通信机制,很多人在使用的时候不会考虑该...
  • u011068702
  • u011068702
  • 2017年01月18日 16:45
  • 882

linux signal 内核处理

linux signal 处理   说明: 本文主要翻译自ULK 3rd chapter 11. 主要受 http://blog.csdn.net/yunsongice 影响,故发表在csdn...
  • wzwind
  • wzwind
  • 2012年02月03日 13:59
  • 6070

Linux Signal (5): 信号集

信号集给我们提供了一个能表示多个信号的是数据类型(sigset_t), 它将在sigprocmask, sigpending, sigsuspend之类的函数中用到, 这些函数我会在以后的文章中介绍....
  • dai_weitao
  • dai_weitao
  • 2007年09月25日 13:05
  • 12528

linux signal 处理

源地址:http://blog.csdn.net/zhuixundelang/article/details/5979465 linuxsignal 处理   说明: 本文主要翻译自ULK ...
  • wh8_2011
  • wh8_2011
  • 2015年09月22日 11:03
  • 2025

linux进程间通信之信号(signal)

1、概念:      软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。信号是在软件层上对中断机制的一种模拟,      是一种异步通信方式。 2、应用:      信...
  • zwz19911991
  • zwz19911991
  • 2014年02月08日 11:21
  • 568
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux Signal (2): signal函数
举报原因:
原因补充:

(最多只允许输入30个字)