学习笔记(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.mzph.cn/bicheng/39903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模板类内部能否含有虚函数?

首先&#xff0c;我们要区分模板类虚函数和模板虚函数&#xff0c;话不多说&#xff0c;先上代码&#xff1a; 模板类虚函数 template<class T> class A{ public:virtual ~A(){}virtual void foo(T &t){} };template<class T, class R> class B : public A<…

第一性原理

第一性原理是一个具有深厚哲学根基并广泛应用于多个领域的概念。以下是对其的详细解析&#xff1a; 一、定义 第一性原理&#xff08;the First Principle Thinking&#xff09;指的是从基本要素出发&#xff0c;不依赖于任何假设或经验&#xff0c;通过逻辑推理一步步建立起…

面向对象编程进阶笔记

一、代码重用与继承 在面向对象编程中&#xff0c;代码重用是一个核心概念&#xff0c;通过继承机制可以实现这一点。继承允许子类自动获得父类的所有方法和属性&#xff0c;无需重复编写相同的代码。子类在继承父类的基础上&#xff0c;可以添加自己特有的属性和方法&#xf…

番外篇 | 斯坦福提出即插即用二阶优化器Sophia :相比Adam实现2倍加速,显著节省大语言模型训练成本

前言:Hello大家好,我是小哥谈。大模型的预训练成本巨大,优化算法的改进可以加快模型的训练时间并减少训练开销。目前大模型的训练优化器基本上都采用Adam及其变体,并且Adam的应用已经有9个年头了,在模型优化方面相当于霸主的地位。但是能否够在优化器方面提高模型预训练效…

医院挂号系统:基于JSP和MySQL的现代化医疗预约平台

开头语&#xff1a;您好&#xff0c;我是专注于医疗系统开发的IT学长。如果您对医院挂号系统感兴趣&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术&#xff0c;B/S架构 工具&#xff1a;Eclipse&#xff0c;MyEclips…

中国企业消费管理,驶入“降本”大潮

在足够明晰的成本优化方案之上&#xff0c;能看到除了美团企业版的产品和需求理解能力&#xff0c;更本质的恰在于其最核心的原子能力——即强供应链底座。 这种兼备深度和广度的能力的最终呈现也就是如今美团为企业提供的多元、优质、满足需求的成本考校和计算方案。 作者…

【Python】成功解决TypeError: ‘float‘ object cannot be interpreted as an integer

【Python】成功解决TypeError: ‘float’ object cannot be interpreted as an integer 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主…

SpringSecurity中文文档(Servlet CAS)

CAS Authentication Overview JA-SIG 生产了一个名为 CAS 的企业级单点登录系统。与其它倡议不同&#xff0c;JA-SIG 的中央认证服务是开源的&#xff0c;广泛使用&#xff0c;易于理解&#xff0c;平台独立&#xff0c;并支持代理功能。Spring Security 完全支持 CAS&#x…

现代信息检索笔记(一)——课程简介

目录 什么是信息检索 应用一&#xff1a;做搜索引擎 应用二&#xff1a;信息推荐系统 应用三&#xff1a;婚恋网站 信息检索的具体应用 从信息规模上分类 为什么要学习信息检索技术&#xff1f; 市场发展需求大 应用需求多&#xff1a; 课程情况 课程宗旨 国际著名…

客户端渗透

1.一键可执行程序 2.给程序加壳 3.宏病毒感染文档 4.Android apk 利用 1.一键可执行程序 介绍&#xff1a;我们要进行客户端渗透&#xff0c;我们生成一个可执行程序&#xff0c;也是简单粗暴&#xff0c;MSF建立监听&#xff0c;把它发给受害者&#xff0c;只要受害者点击…

【面试系列】C 语言高频面试题

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

VQ-VAE中如何解决梯度截断(不可导)问题?直通估计、(stop gradient,停止梯度)

&#xff08;stop gradient&#xff0c;停止梯度&#xff09;运算 它简称为sg 也就是说&#xff0c;前向传播时&#xff0c;&#x1d460;&#x1d454;里的值不变(sg1)&#xff1b;反向传播时&#xff0c;&#x1d460;&#x1d454;按值为0求导(sg0)&#xff0c;即此次计算无…

canvas画箭头线

箭头线 vueuni-appcanvas 画带箭头可拖动的线段 <template><div><canvas ref"canvas" class"canvas" width"600px" height"400px" mousedown"startDrawing" mousemove"draw" mouseup"stopD…

Centos手动安装PHP和配置mydqli模块

第一步&#xff1a;手动安装php和php-fpm sudo yum install php php-fpm 安装 sudo systemctl start php-fpm 启动 sudo systemctl enable php-fpm 开机启动 php -v php-fpm -v PHP 5.4.16 (cli) (built: Apr 1 2020 04:07:17) Copyright (c) 1997-2013 The PHP G…

【加密与解密】【09】GPG Client签名流程

什么是GPG客户端 GPG客户端是实现PGP加密协议的一套客户端程序&#xff0c;可用于加密或签名 下载GPG客户端 建议安装命令行工具&#xff0c;图形工具一般不具备完整功能 https://gnupg.org/download/index.html生成私钥 此时会要求你输入名称&#xff0c;邮箱&#xff0c…

Qt Q_ASSERT详解

Q_ASSERT详解 引言一、基本用法二、深入了解三、参考链接 引言 Q_ASSERT是 Qt 框架中的一个宏&#xff0c;用于在调试时检查某个条件是否为真。它是程序调试中的一个重要工具&#xff0c;有助于开发者在开发过程中及时发现并修复潜在的错误。 一、基本用法 只在使用 Qt 的 D…

干货:科技论文写作保姆级攻略

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。科技论文是报道自然科学研究或技术开发工作成果的论说文章。通常基于概念、判断、推理、证明或反驳等逻辑思维体系&#xff0c;使用实验调研或理论计算等研究手段&#xff0c;按照特定格式撰写完成。 科技论文可以粗略分为…

UiPath+Appium实现app自动化测试

一、环境准备工作 1.1 完成appium环境的搭建 参考&#xff1a;pythonappiumpytestallure模拟器(MuMu)自动化测试环境搭建_appium mumu模拟器-CSDN博客 1.2 完成uipath的安装 登录官网&#xff0c;完成注册与软件下载安装。 UiPath业务自动化平台&#xff1a;先进的RPA及自动…

vue组件深入介绍之插槽

了解插槽之前请先了解vue组件基础及注册 Vue2官网介绍 Vue3官网介绍 1、vue2插槽介绍 在2.6.0中&#xff0c;具名插槽和作用域插槽引入了一个新的统一语法&#xff08;v-slot指令&#xff09;。它将取代slot和slot-scope&#xff1b; Vue 实现了一套内容分发的 API&#xf…

AI 会淘汰程序员吗?

前言 前些日子看过一篇文章&#xff0c;说国外一位拥有 19 年编码经验、会 100% 手写代码的程序员被企业解雇了&#xff0c;因为他的竞争对手&#xff0c;一位仅有 4 年经验、却善于使用 Copilot、GPT-4 的后辈&#xff0c;生产力比他更高&#xff0c;成本比他更低&#xff0c…