signal 传参实例
来源:互联网 发布:安卓sdk安装教程linux 编辑:程序博客网 时间:2024/05/04 12:13
首先是信号注册的实例
#include <stdio.h>#include <stdlib.h>#include "signal.h"#include "sys/types.h"#include "unistd.h" void my_action(int signum, siginfo_t * info, void * myact){ //信号的响应操作 printf("recive signal %d\n", signum); //打印sigval的参数 printf("int parmer %d\n", info->si_int); }void CreateSigAndBind(int Sig,void (*fun)(int signum, siginfo_t * info, void * myact)) { struct sigaction act; //创建新的信号 struct sigaction old_act; //用与记录旧的信号,当然你也可以不用记录 sigemptyset(&act.sa_mask); act.sa_flags = SA_SIGINFO; act.sa_sigaction = fun; //设置信号的响应操作 if(sigaction(Sig, &act, &old_act) < 0) { //开始创建信号 printf("install sigal error\n"); return ; } } int main(int argc, char**argv) { CreateSigAndBind(13,&my_action); CreateSigAndBind(44,&my_action); while(1) { //为了测试写的一个死循环 sleep(2); printf("Now we wait for signal\n"); } return 1 ; }
然后是发送信号的实例
#include <signal.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#define MYSIG 13int main(int argc, char ** argv) { pid_t pid = (pid_t)atoi(argv[1]); //发送的信号值 int signo = MYSIG; //附带在信号上的参数 union sigval mysigval; mysigval.sival_int = 8; //sigval支持也 void *sival_ptr; //发送信号 if(sigqueue(pid, signo, mysigval)==-1) { printf("send signal fail\n"); return -1; } printf("send signal success\n"); sleep(2); }
几个重要说明
传参需要用到的sigval结构体
union sigval {int sival_int;void *sival_ptr;};
常用的用户自定义信号
10.SIGUSR1 12.SIGUSR2 34-64.SIGRTMIN - SIGRTMAX
例如,原子操作。
0 0
- signal 传参实例
- C函数signal实例
- Java Signal实例
- Java Signal实例
- signal(SIGIO,XXXX)实例
- signal函数使用小实例
- linux fork signal 编程实例
- c实现signal函数实例
- linux应用编程:signal(信号量) 实例1
- signal学习代码实例(sigaction/signalfd)
- linux下线程通过signal通信实例
- signal
- signal
- Signal
- signal
- signal
- signal
- signal
- ListView的Adapter有多个ViewHolder的时候导致的ViewHolder类型转换错误!
- 初学者从oracle到mysql之——日期字符串转换
- ViewPager & Fragment & HorizontalScrollView & ListView···
- 第二周项目1--C/C++语言中函数参数传递的三种方式
- 排序算法之直接插入排序(JAVA)
- signal 传参实例
- jsp中读取cookie
- 在Python 中获得当前路径
- 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波
- 查看mysql所有的主键,外键约束名称
- MTK6572平台常用编译命令
- linux代码分析
- Unity 5.1+ Assertion Library (断言库)
- display:inline-block之用法