linux c-Linux截取信号中用signal()注册处理函数的问题。

问题描述

Linux截取信号中用signal()注册处理函数的问题。

在Linux中一个线程内通过signal()注册处理函数时,写法代码如下:signal(SIGPIPE,sig_pipe); 在sig_pipe()函数的定义时有一个int型的形参,那在线程接收到信号后如何传递这个int型的形参?

解决方案

这个是回调函数调用的时候给你传递的参数数据

解决方案二:

这个就是信号编码,这样你可以多个信号注册同一个回调函数

解决方案三:

http://wenku.baidu.com/link?url=biHjUHphDFwcq1YM55LdMec12fS6HmdTNKgOfKQG0URcmwLGqG8VD1dtRSVUj7Pd9_E4L8Si2uvkOzeqbrKafcrTrlxet9JVAoROpGTG8Zm

时间: 2024-10-30 19:01:44

linux c-Linux截取信号中用signal()注册处理函数的问题。的相关文章

Linux信号(signal) 机制分析(1)

[摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等.最后介绍了应用层的相关处理,主要包括信号处理函数的安装.信号的发送.屏蔽阻塞等,最后给了几个简单的应用实例. [关键字]软中断信号,signal,sigaction,kill,sigqueue,settimer,sigmask,sigprocmask,sigset_t 1. 信号本质 软

Linux信号(signal) 机制分析(2)

接上文 5. 信号的发送 发送信号的主要函数有:kill().raise(). sigqueue().alarm().setitimer()以及abort(). 5.1 kill() #include <sys/types.h>  #include <signal.h>  int kill(pid_t pid,int signo)   该系统调用可以用来向任何进程或进程组发送任何信号.参数pid的值为信号的接收进程 pid>0 进程ID为pid的进程 pid=0 同一个进程组

linux系统编程之信号(二) 信号发送函数及不同精度的睡眠

一.kill, raise, killpg 函数 int kill(pid_t pid, int sig); int raise(int sig); int killpg(int pgrp, int sig); kill命令是调用kill函数实现的,kill函数可以给一个指定的进程或进程组发送指定的信号,其中kill 函数的pid 参数取值不同表示不同含义,具体可man 一下.raise函数可以给当前进程发送指定的信号(自己给自己发信号).killpg 函数可以给进程组发生信号.这三个函数都是成

Linux C系统编程:信号与定时器的使用

#include <stdio.h> #include <signal.h> void do_alarm(int num); int main(void) { //注册一个定时器 if(signal(SIGALRM , do_alarm) == SIG_ERR) { perror("register alarm fail"); return -1; } //alarm ////3秒之后发送SIGALRM信号,但是一次性的 SIGALRM信号:定时器的信号 ala

linux系统编程之信号(三) 信号的阻塞与未决

一.信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending).进程可以选择阻塞(Block)某个信号.被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.注意,阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作.信号在内核中的表示可以看作是这样的: 每个信号都有两个标志位分别表示阻塞和未决,还有一个函数指针表示处理动作.信号产生时,内核在进程控制块中设置该信

[Linux转载]Linux 操作

Linux操作命令集合 参考:http://www.cnblogs.com/rollenholt/archive/2012/09/01/2667184.html   正在运行的内核和系统信息 # uname -a # 获取内核版本(和BSD版本) # lsb_release -a # 显示任何 LSB 发行版版本信息 # cat /etc/SuSE-release # 获取 SuSE 版本 # cat /etc/debian_version # 获取 Debian 版本 使用 /etc/DIST

在Windows中使用Linux时Linux与Windows的资源交互

每一年,Linux 新闻记者和爱好者都会公开讨论,下一年是否会成为 "Linux 桌面" 之年.尽管购买一台已在运行 Linux 的新机器或将现有的 Windows 系统迁移到 Linux 比以往更加容易,但简单地安装和启动 Linux 还不足以将其打造 为日常使用的操作系统.您可能已开始在桌面上使用 Linux,但您使用新 Linux 系统的环境可能不那么现代化.大部分企 业.中小型企业,以及小型办公室/家庭办公环境都拥有必须考虑的 Windows 相关需求.您可能还需要将仅在 Wi

socket-刚学linux网络编程,有个问题,listen( )函数可以用来监听其他电脑的端口吗?

问题描述 刚学linux网络编程,有个问题,listen( )函数可以用来监听其他电脑的端口吗? 如果可以是不是可以用这样的流程,先socket()创建描述符, 然后再bind()绑定一个IP地址跟端口? 解决方案 实在是没看懂你的需求 解决方案二: listen是侦听本机的端口,只有服务器端才需要这么做,你想监听其他主机,就需要在局域网路由器等上面做流量监控 解决方案三: 可以,基于socket的编程,只要绑定对IP地址就可以了.

linux-关于Linux关于Linux关于Linux关于Linux

问题描述 关于Linux关于Linux关于Linux关于Linux 关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linux关于Linu