进程间通讯
进程间通讯(IPC)是指在两个或多个不同的进程间传递或者交换信息。
进程是一个独立的资源管理单元,不同的进程之间资源是独立的,不能在一个进程中直接访问另一个进程的资源,但是进程间也不是孤立的,因此,进程间也需要一些信息的交互和状态传递,所以呢也就需要进程间数据传递,同步和异步的机制。
1、linux使用的进程间通信方式:
(1)无名管道(pipe)和有名管道(FIFO)
(2)消息队列
(3)共享内存
(4)信号量
(5)信号(signal)
(6)套接字(socket)
2、进程间通讯的目的
数据传输:一个进程需要将它的数据发送给另一个进程。
共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
资源共享的同步:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。