进程用户空间相互独立,一般不能互相通信,但是会出现进程间协调合作互相通信的情况:
进程通信应用场景:
1、数据传输:一个进程需要将他的数据发送给另一个进程,发送的数据量在一个字节和几M字节之间
2、共享数据、多个进程想要操作共享数据,一个进程对共享数据进行了修改没别的进程应该能看见
3、通知事件:一个进程需要向另一个或者一组进程发送消息,通知发生了某件事情
4、资源共享:多个进程需要共享同样的资源,
5、进程控制:有些进程希望完全控制另一个进程的执行(debug)
进程通信方式:
1、管道:三种1)普通管道:有两种限制,一是单工,二是只能在父子或者兄弟进程之间使用 2)流管道,半双工只能在父子和兄弟进程间使用 3)命名管道,去除了第二种限制,可以在许多不相关的进程间通信
2、信号量:一个计数器,用来控制多个进程对共享资源的访问
3、消息队列,消息队列是消息的链表,放在内核中并有消息队列标识符标识。
4、信号:主要通知接收某个事件已经发生
5、共享内存,就是映射一段能被其他程序所访问的内存,这段共享内存有一个进程创建,但是多个进程都可以访问。共享内存是最快的IPC方式
6、套接字(socket)用于不同机器间进程通信。