学习笔记(linux高级编程)11

进程间通信 ===》信号通信

    应用:异步通信。 中断,,

    1~64;32应用编程。

    如何响应:

     Term   Default action is to terminate the process.

       Ign    Default action is to ignore the signal.

       wait

       Core   Default action is to  terminate  the  process  and  dump  core  (see

              core(5)).

         gdb a.out -c core

       Stop   Default action is to stop the process.

       Cont   Default  action  is  to  continue  the  process  if  it is currently

              stopped.

    kill      -xx     xxxx

    发送进程  信号    接收进程

    kill -9 1000

    a.out  9 1000

    1、发送端

    #include <sys/types.h>

    #include <signal.h>

int kill(pid_t pid, int sig);

    功能:通过该函数可以给pid进程发送信号为sig的系统信号。

    参数:pid 要接收信号的进程pid

           sig 当前程序要发送的信号编号 《=== kill  -l

    返回值:成功 0

             失败  -1;

int raise(int sig)== kill(getpid(),int sig);

    功能:给进程自己发送sig信号

unsigned int alarm(unsigned int seconds);SIGALAM

    功能:定时由系统给当前进程发送信号

           也称为闹钟函数

           闹钟只有一个,定时只有一次有效,

           但是必须根据代码逻辑是否执行判断。

int pause(void);

    功能:进程暂停,不再继续执行,除非

           收到其他信号。

2、信号  kill  -l  ==>前32个有具体含义的信号

3、接收端

         每个进程都会对信号作出默认响应,但不是唯一响应。

         一般如下三种处理方式:

         1、默认处理

         2、忽略处理 9,19

         3、自定义处理 9,19 捕获

         以上三种方式的处理需要在如下函数上实现。

信号注册函数原型:

     void ( *signal(int signum, void (*handler)(int)) ) (int);


sighandler_t signal(int signum, sighandler_t handler);

ipcs -a 查询共享内存,信号量集,消息队列

    ipcrm -s 删除信号量集

           -m 删除共享内存

共享内存 ===》效率最高的进程间通信方式

system v :  共享内存  信号量集

   IPC对象操作通用框架:

   0x  ftok

   key值 ==> 申请 ==》读写 ==》关闭 ==》卸载

操作流程:

    key ==》申请对象 ==》映射对象==》读写对象

        ==》撤销映射 ==》删除对象

1.ftok()创建临时键值。

   #include <sys/types.h>

   #include <sys/ipc.h>

                "/etc"                         '!'

   key_t ftok(const char *pathname, int proj_id);

   功能:通过该函数可以将pathname指定的路径用来以

         proj_id生成唯一的临时键值。

   参数:pathname 路径+名称===》任意文件,只要不会

         被删除重建即可。

         proj_id  整形的数字,一般用ASCII码的单字符

         表示与参数1的运算。

   返回值:成功 返回唯一键值

            失败  -1;

2、申请对象:shmget()

   #include <sys/ipc.h>

   #include <sys/shm.h>

   ps aux|grep a.out

       share memory get               IPC_CREAT|0666

   int shmget(key_t key, size_t size, int shmflg);

   功能:使用唯一键值key向内核提出共享内存使用申请

   参数:key  唯一键值

         size  要申请的共享内存大小

         shmflg 申请的共享内存访问权限,八进制表示

         如果是第一个申请,则用IPC_CREAT

         如果要检测是否存在,用IPC_EXCL

   返回值:成功 返回共享内存id,一般用shmid表示

            失败  -1;

3.映射对象:shmat()

   void *shmat(int shmid, const void *shmaddr, int shmflg);

   功能:将指定shmid对应的共享内存映射到本地内存。

   参数:shmid 要映射的本地内存

         shmaddr 本地可用的地址,如果不确定则用NULL,表示

                  由系统自动分配。

         shmflg 

         0,表示读写

         SHM_RDONLY,只读

   返回值:成功 返回映射的地址,一般等于shmaddr

            失败 (void*)-1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ignis 应用: 社交 + 游戏 + 工业4.0,Ignis 构建Web3生态圈

引言 在数字经济快速发展的今天&#xff0c;Web3技术为我们带来了前所未有的变革。作为Ardor平台的主要子链&#xff0c;Ignis公链在推动Web3生态系统建设中扮演了重要角色。本文将通过介绍Vessel Chain、Mythical Beings和Bridge Champ等应用&#xff0c;探讨Ignis公链如何通…

基于循环神经网络的一维信号降噪方法(简单版本,Python)

代码非常简单。 import torch import torch.nn as nn from torch.autograd import Variable from scipy.io.wavfile import write #need install pydub module #pip install pydub import numpy as np import pydub from scipy import signal import IPython import matplot…

基于强化学习DQN的股票预测【股票交易】

强化学习笔记 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实例分析:GridWorld 第六章 蒙特卡洛方法 第七章 Robbins-Monro算法 第八章 多臂老虎机 第九章 强化学习实例分析:CartPole 第十章 时序差分法 第十一…

swiftui中常用组件picker的使用,以及它的可选样式

一个可选项列表就是一个picker组件搞出来的&#xff0c;它有多个样式可以选择&#xff0c;并且可以传递进去一些可选数据&#xff0c;有点像前端页面里面的seleted组件&#xff0c;但是picker组件的样式可以更多。可以看官方英文文档&#xff1a;PickerStyle | Apple Developer…

【Week-G2】人脸图像生成(DCGAN)--pytorch版本

文章目录 0、遇到的问题1、配置环境 & 导入数据2、定义模型3、训练模型4、什么是DCGAN? &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 本文环境&#xff1a; 系统环境&#xff1a;…

从搜索框的提示词中再探防抖和节流

前言 最近逛掘金时&#xff0c;看到了一篇文章。发现是我之前写过的一篇文章主题是防抖和节流的&#xff0c;看防抖时没感觉哪里不一样&#xff0c;但是当我看到节流时发现他的节流怎么这么繁琐(・∀・(・∀・(・∀・*)&#xff1f; 抱着疑惑的想法&#xff0c;我仔细拜读了这…

PyCharm 如何设置作者信息

1、点击pycharm右上角的齿轮&#xff0c;选择settings 2、选择editor 3、选择 Editor File and Code Templates 4、选择作者信息的文件类型&#xff0c;中间选择框选择Python Script 5、然后在右边的输入框中输入相关的信息 # -*- coding: utf-8 -*- """ Time …

kotlin接口,前端怎么调用?

文章目录 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;Java学习路线&#x1f4dc;其他专栏&#xff1a;Java学习路线 Jav…

构建大数据生态:Sqoop、Hadoop、IDEA和Maven的完整安装与数据预处理指南【实训Day03】

一、Sqoop安装 1 上传安装包并解压缩(在hadoop101上) # cd /opt/software 点击xftp上传sqoop的安装文件sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz # tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/ # cd /opt/module/ # mv s…

vue3+vue-router+vite 实现动态路由

文章中出现的代码是演示版本&#xff0c;仅供参考&#xff0c;实际的业务需求会更加复杂 什么是动态路由 什么场景会用到动态路由 举一个最常见的例子&#xff0c;比如说我们要开发一个后台管理系统&#xff0c;一般来说后台管理系统都会分角色登录&#xff0c;这个时候也就涉…

基于Vue.js和SpringBoot的地方美食分享网站系统设计与实现

你好&#xff0c;我是计算机专业的学姐&#xff0c;专注于前端开发和系统设计。如果你对地方美食分享网站感兴趣或有相关需求&#xff0c;欢迎随时联系我。 开发语言 Java 数据库 MySQL 技术 Vue.js SpringBoot Java 工具 Eclipse, MySQL Workbench, Maven 系统展示…

【Spring Boot】关系映射开发(一):一对一映射

关系映射开发&#xff08;一&#xff09;&#xff1a;一对一映射 1.认识实体间关系映射1.1 映射方向1.2 ORM 映射类型 2.实现 “一对一” 映射2.1 编写实体2.1.1 新建 Student 实体2.1.2 新建 Card 实体 2.2 编写 Repository 层2.2.1 编写 Student 实体的 Repository2.2.2 编写…

AMEYA360代理:海凌科60G客流量统计雷达模块 4T4R出入口绊数计数

数字化时代&#xff0c;不管是大型商城还是各种连锁店&#xff0c;客流统计分析都可以帮助企业更加精准地了解顾客需求和消费行为。 海凌科推出一款专用于客流量统计的60G雷达模块&#xff0c;4T4R&#xff0c;可以实时进行固定范围内的人体运动轨迹检测&#xff0c;根据人体的…

0703_ARM7

练习&#xff1a; 封装exti&#xff0c;cic初始化函数 //EXTI初始化 void hal_key_exti_init(int id,int exticr,int mode){//获取偏移地址int address_offset (id%4)*8;//获取寄存器编号int re_ser (id/4)1;//printf("address_offset%d,re_ser%d\n",address_o…

学会python——用python编写一个电子时钟(python实例十七)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…

软件模型分类及特点

在软件开发的世界里&#xff0c;我们经常会遇到业务模型、系统模型和软件模型这三个层次。这些模型各有特点&#xff0c;相互之间也有着紧密的联系。通过理解这三个层次之间的映射关系&#xff0c;我们能更好地理解和掌握软件开发的全过程 1. 业务模型 业务模型描述了组织的业…

搜维尔科技:Xsens实时动作捕捉,驱动人形机器人操作!

搜维尔科技&#xff1a;http://www.souvr.comhttp://www.souvr.com实时动作捕捉&#xff0c;驱动人形机器人操作&#xff01; 搜维尔科技&#xff1a;Xsens实时动作捕捉&#xff0c;驱动人形机器人操作&#xff01;

方向导数和梯度

方向导数和梯度 1 导数的回忆2 偏导数及其向量形式偏导数的几何意义偏导数的向量形式 3 方向导数向量形式几何意义方向导数和偏导的关系 4 梯度5 梯度下降算法 1 导数的回忆 导数的几何意义如图所示&#xff1a; 当 P 0 P_{0} P0​点不断接近 P P P时&#xff0c;导数如下定义…

vue 中使用element-ui实现锚点定位表单

效果图&#xff1a; 代码&#xff1a; html代码&#xff1a; <div class"content-left"><el-tabs :tab-position"left" tab-click"goAnchor"><el-tab-pane v-for"(item,index) in anchorNameList"v-anchor-scroll:ke…

LeetCode 60.排序排列(dfs暴力)

给出集合 [1,2,3,...,n]&#xff0c;其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a; "123""132""213""231""312""321" 给定…