系列文章目录
文章一: Linux—进程通信(一)—进程通信概述
文章二: Linux—进程通信(二)—管道
文章三: Linux—进程通信(三)—信号通信
文章四: Linux—进程通信(四)—IPC通信之共享内存
文章五: Linux—进程通信(五)—IPC通信之消息队列
文章六: Linux—进程通信(六)—IPC通信之信号灯
前言
本文主要介绍了进程通信的相关概念:
1.为什么需要进程通信
2.有哪些进程通信的手段
一、进程通信
1.线程间通信与进程间通信
进程通信:在Linux内核中实现信息的传递,通过内核空间的对象
线程通信:在用户空间中实现信息的传递,如全局变量
2.为什么要强调进程通信
首先我们知道:
1.进程间无法在用户空间进行通信,只能在内核空间进行通信
2.编写程序时,我们可以随意访问的是用户空间,内核空间无法做到任意访问
那么基于以上两点,进程通信相比于线程通信是更加困难的,需要我们着重去解决!
3.有哪些进程通信的手段
管道通信
分为无名管道和有名管道(文件系统中有名字)
1.相当于在内核空间中开辟一个内存,让多个进程可以同空间访问同一信息。
2.使用时,需要注意亲缘关系的进程和非亲缘关系的进程。
信号通信
信号通信包括:
1.信号的发送
2.信号的接收
3.信号的处理
信号通信本质上是一种通知,我们可以赋予通知一些意义,当然内核本身已经赋予了一些信号意义。
比如说:
Ctrl+c本身会触发一种信号,内核已经定义了该信号会结束进程,这就是我们常用的终止进程的方式的原理。
IPC通信
IPC(Inter-Process Communication)通信。
包括:
1.共享内存
2.消息队列
3.信号灯
这些通信方式更为复杂一些,拥有更加强大具体的功能
Socket通信
Socket通信又叫套接字通信,是网络通信。
当两个进程不在一台电脑上时,我们可以通过网络来进行进程间的通信。当然,通过将IP地址设置为回环地址(127.0.0.1),我们也可以进行一台电脑上的进程间通信。
总结
本文章对进程通信进行总体性描述,具体的知识内容将在接下来的文章中进行讲解。
关于进程与线程的更多比较可以查看文章:
多线程与多进程(概念详细讲解)