linux——高级信号

news/2023/6/7 0:58:50

高级信号的收发

发:

siquequ

收:

sigaction() 包含三个元素num,sigaction()函数,备份

  1. num ->signum

  1. sigaction是一个结构体,需额外配置再传进来

  1. 备份直接忽略,代表不需要备份

sigaction结构体又包含四个元素

  1. sa_handler,不需要配置,如果配置了则和普通信号一样

  1. sa_sigaction,一个结构体,再额外配置传进来

  1. sa_mask,阻塞,不配置

  1. sa_flags,需要配置为:SA_SIGINFO才能获取信号

sa_sigaction结构体配置

  1. signum

  1. siginfo,系统内部的结构体,可用指针引出来输出想要知道的信息

  1. 指针,空表示没有数据,非空表示有

接收信息的代码

#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>//int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);
void handler(int signum, siginfo_t *info, void *context)
{printf("get signum %d\n",signum);if(context != NULL){printf("get data = %d\n",info->si_int);printf("get data = %d\n",info->si_value.sival_int);printf("from:%d\n",info->si_pid);}}int main ()
{struct sigaction act;printf("my pid is :%d\n",getpid());act.sa_sigaction = handler;act.sa_flags = SA_SIGINFO;sigaction(SIGUSR1,&act,NULL);while(1);return 0;
}

发送信息代码:

#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc,char **argv)
{int signum;int pid;signum = atoi(argv[1]);pid = atoi(argv[2]);union sigval value;value.sival_int = 100;
//int sigqueue(pid_t pid, int sig, const union sigval value);sigqueue(pid,signum,value);printf("pid is %d\n",getpid());return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4568482.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

RK3399芯片上电后加载启动程序的详细流程

芯片上电解复位之后执行的第一段程序&#xff0c;在芯片中称之为Bootrom loader。这部分程序在芯片制造过程中固化到其内部的ROM空间&#xff0c;具备只读属性&#xff0c;在实际使用过程中无法修改这部分内容&#xff0c;这部分程序的知识产权也仅归属于芯片公司所有。其实&am…

RK3326芯片产品/参数介绍

RK3326是为个人平板电脑和智能音频设备设计的高性能四核应用程序处理器。提供了许多嵌入式强大的硬件引擎来优化高端应用程序的性能。RK3326支持几乎全格式的H.264解码器,支持1080p@60fps,H.265解码器支持1080p@60fps,通过1080p@30fps支持H.264编码器,高质量的JPEG编码器/解…

RK3399平台开发系列讲解(电源管理篇)11.9、autosleep

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、autosleep二、/sys/power/autosleep三、pm_autosleep_init四、pm_autosleep_state()五、try_to_suspend()沉淀、分享、成长,让自己和他人都能有所收获&

VS2017 C++控制台程序不用加pch.h

在VS2017中新建C控制台项目时&#xff0c;会自动包含"pch.h"文件&#xff0c;实际上这个文件中没有内容&#xff0c;只是刷刷题的话这个是没有用的&#xff0c;但是删掉编译又会出错&#xff0c;可通过以下方式解决&#xff0c;在一些在线oj刷题提交的时候就比较有用…

iOS创建pch文件

1.新建文件&#xff0c;如图&#xff1a; PCHFile文件 2.创建好后&#xff0c;如图&#xff1a; 创建好后 3.配置路径&#xff0c;在 BuildSettings中&#xff0c;找到Prefix Header&#xff0c;设置为yes&#xff0c;并且配置路径&#xff0c;如图&#xff1a; 配置创建的Pr…

iOS中PCH文件的使用

1. PCH简介 Xcode6之前创建的工程都自带PCH文件&#xff0c;Xcode6之后创建的工程默认不带PCH文件&#xff0c;苹果可能出于节省编译时间的考虑&#xff0c;不推荐开发者使用PCH。在PCH文件中定义的宏&#xff0c;导入的头文件在整个工程中都会引用。 2. PCH文件的作用 存放一…

pch头文件

1.commandN ---> Other ---> PCH File 2.点击工程 ---> Build Settings ---> 搜索框中输入pref ---> 找到Prefix Header 输入 $(SRCROOT)/pch文件名.pch(例如:PrefixHeader.pch) 可能会报错: /Users/apple/Documents/xxxxx/PrefixHeader.pch file not found 解…

Xcode—新建/配置pch文件

新版Xcode已经默认不配备pch文件&#xff0c;pch文件可以把常用的宏和类的头文件等导入到pch文件使用起来非常的方便&#xff0c;能够提高开发效率。但由于pch的滥用&#xff08;很多不用的宏&#xff0c;以及大量的头文件&#xff09;导致了编译效率变低&#xff0c;XCode6以后…