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套接字网络通信
最新文章
- JavaScript数组属性与方法
- JMeter入门
- python:UnicodeEncodeError
- POJ 1269 (直线相交) Intersecting Lines
- 《C和指针》章节后编程练习解答参考——6.3
- js 返回前一页并刷新页面方法
- python-整理-logging日志
- jQuery 图表
- C++学习笔记1(扩充:C++中的格式控制)
- How to change your password of your mysql account in WampServer
- 使用fastdfs-zyc监控FastDFS文件系统
- 搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程----转载
- 《SpringMVC从入门到放肆》一、概述
- 判断标签是否包含class的方法
- 加密原理介绍,代码实现DES、AES、RSA、Base64、MD5
- js如何使用正则表达式实现过滤HTML标签?(/<;[^<;>;]+>;/g)
- fusioncharts的3D饼图固定大小和角度
- 去掉Tomcat的管理页面
- [Beta]M2事后分析
- Json 转 dynamic
热门文章
- vmware网络连接
- C#整合ActiveMQ与SpringBoot整合ActiveMQ数据间交互
- 2022-05-19内部群每日三题-清辉PMP
- Traefik官方文档以及翻译文档
- linux下yum安装时出现Loaded plugins: fastestmirror
- springboot ElasticsearchRepository date_histogram 聚合查询
- Docker 安装开发运行环境
- 【电路理论】Flyback dc-dc convertor 反激式dc-dc变换器
- jenkins构建触发器定时任务Build periodically和Poll SCM 后续研究
- idea远程连接云服务器,并将本地代码部署在云端进行运算