IPC,进程间通信
信号机制
也叫软中断,软件层次上对中断的模拟
kill -9 加进程号可以终止进程
linux下执行kill -l可以看到
这里面居然没有32 33 直接从31到34
所以一共是62个信号
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
信号17:子进程退出发送给父进程的信号
信号18:让暂停的进程继续运行
信号19:暂停进程,信号不能被忽略,捕捉,屏蔽
同样不能被忽略,捕捉,屏蔽的信号还有9号信号
只能执行默认动作
所谓捕捉,就是捕捉处理,在该信号发生时执行一些特定动作,比如自己定义的函数
管道
匿名管道
用于有父子关系,家族关系的,fork出来的进程之间的通信
管道需要创建于fork函数执行之前
这样才能复制内核中的打开文件表,具有相同的管道
因为管道本质是文件,匿名管道没有文件实体,只是存在于内核区的内存中而已
有名管道
无关系的进程,非fork出的进程之间的通信
eventfd,linux新特性
待补全
信号量
内存映射
将文件的一部分映射到某个进程的地址空间
其他打开该文件的进程就可以获取其中变化修改的内容
这不就是多个进程打开同一个文件?
共享内存

在虚拟地址空间的用户区中,设置一块可以多个进程共享的内存,共享内存开辟在堆区和栈区之间
相比其他如信号,管道等方式,这种方式在通信的时候,由于该共享内存不在内核区,无需内核的介入,所以效率会更高
但,多进程访问又会是新的问题,需要并发控制,加锁

linux 下用ipcs命令查询共享内存的信息
ipcs -a 可以查询共享内存,消息队列,信号量数组
0664是设置权限,创建共享内存,如果只是获取一块已经创建好的,则不需要

shmctl删除是删除不与任何进程关联的内存,如果还有进程尚未与该内存分离,尚在使用,则删除不了,只做个标记,等所有进程都不使用该内存,就会删除
shmctl标记删除,可以多个进程调用
这段只是记录下用法,如果直接用这段代码,刚创建的共享内存就会马上释放,因为没有别的进程在使用
消息队列
rabbitmq?这样和网络通信有什么区别?
socket套接字网络通信
IPC,进程间通信的更多相关文章
- Android开发之IPC进程间通信-AIDL介绍及实例解析
一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用 ...
- 【IPC进程间通信之四】数据复制消息WM_COPYDATA
IPC进程间通信+数据复制消息WM_COPYDATA IPC(Inter-Process Communication,进程间通信). 数据复制消息WM_C ...
- UNIX:高级环境编程 - 第十五章 IPC:进程间通信
IPC(InterProcess Communication)进程间通信.为啥没有进程间通信,这是因为进程间都是同步的关系,不需要通信. 1.管道 1.1管道特点: (1)半双工的(即数据只能在一个方 ...
- IPC进程间通信 - AIDL+Binder
原理 http://www.linuxidc.com/Linux/2012-07/66195.htm 服务端,客户端处在用户空间,而binder驱动处在内核空间. 服务器端.一个Binder服 ...
- IPC 进程间通信
linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它 ...
- IPC 进程间通信方式——共享内存
共享内存 共享内存区域是被多个进程共享的一部分物理内存. 多个进程都可以把共享内存映射到自己的虚拟空间.所有用户空间的进程要操作共享内存,都要将其映射到自己的虚拟空间,通过映射的虚拟内存空间地址去操作 ...
- IPC 进程间通信方式——管道
进程间通信概述 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间 共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到. 通知时间: ...
- unix domain IPC 进程间通信简析
Linux系统有多种进程间通信方式,如信号.消息队列.管道等,socket是其中一种,socket使用unix domain 模式进行进程间通信 //服务端代码 #include <stdio. ...
- IPC进程间通信---共享内存
共享内存 共享内存:共享内存就是分配一块能被其它进程访问的内存.每个共享内存段在内核中维护着一个内部结构shmid_ds, 该结构定义在头文件linux/shm.h中,其结构如下: struct sh ...
- IPC进程间通信---消息队列
消息队列 消息队列:消息队列是一个存放在内核中的消息链表,每个消息队列由消息队列标识符标识.与管道不同的是消息队 列存放在内核中,只有在内核重启(即操作系统重启)或者显式地删除一个消息队列时,该消息队 ...
随机推荐
- css实现一个冰墩墩
一墩难求,花了一两个小时自己画了一个,HTML结构很简单,CSS上主要就是将各个位置定位,肚子上的logo就只有发挥啦 以下是HTML代码 <div class="container& ...
- Vue项目中怎样把参数(对象)转成formdata传给后端? 封装函数 亲测有效
普通传参格式如下: 想要的formData参数格式如下: 首先封装参数(对象)转换为formData格式 getFormData(object) { const formData = new Form ...
- software_programming
2020-04-04 12:05:43 todo list Java8 实战2> chapter2 行为参数化 业务逻辑的隔离 DSL
- linux 清空catalina.out日志 不需要重启tomcat(五种方法)
linux 清空catalina.out日志 不需要重启tomcat 1.重定向方法清空文件 [root@localhost logs]# du -h catalina.out 查看文件大小17 ...
- js-防抖(简易版)
/** * 节流函数 */ var count = 1; var container = document.getElementById('container'); function getUse ...
- 备份docker mysql数据库
1.查看容器 docker ps 2.进入容器 docker exec -it 容器id /bin/bash 3.备份数据 mysqldump 数据库名称 -uroot -p >/root/** ...
- ubuntu18.04系统下RealTek RTL 8852BE网卡没有WiFi驱动
1 打开终端:sudo apt-get update2 安装必要的包:sudo apt-get install make gcc linux-headers-$(uname -r) build-ess ...
- 移动web_平面转换
平面转换 平面 平移 旋转 缩放 概念:使用transform属性实现元素的位移.旋转.缩放等效果 注意点:行内元素所有的平面转换是没有效果的 平面: 平面转换的平面指的是二维平面(2D)只有X和Y轴 ...
- python+接口参数化(ddt和pytest.mark.parametrize())使用
一.ddt(基于unittest) 实例:字典解包[{},{}] test_data=t.read_excel(mode,case_list)@ddt class Interface(unittest ...
- CNN模型踩坑记录
刚刚在跑textCNN的模型,加载了字典后,在同样的输入下模型的输出一直在变化,先发现损失函数一直在变化,不停debug之后发现是模型的输出一直在变化,在模型输入一直不变下模型输出不同,最后发现是模型 ...