Unix IPC

Unix高级环境编程的简单总结:

1 使用pipe生成管道p[2],然后fork出child进程,p[0]是读端,p[1]是写端。这样的话,child和parent一个读--->一个写,就可以进行通信了。
2 使用popen打开一个管道,它做的动作是:fork出一个child的stdin或者stdout和返回的描述字连接起来。
3 协同进程---比较冷门,shell的管道就是这么做的。将一个进程的stdin和另一个进程的stdout连接起来等等类似的。
4 使用msgget,msgsnd,msgrcv创建消息队列,发送消息,接收消息。但是现在的linux上要比管道慢。
5 使用mkfifo创建命名管道fifo,没有公共祖先的进程也可以使用这种管道传送。这一点比pipe要好。
  但是pipe和fifo都是半双工的。
6 使用semget,semctl,semop创建信号量,操作信号量。但是有些没有必要的复杂度。
7 共享存储是最快的ipc,因为不需要数据的复制。需要使用信号量对共享存储区进行同步的访问。

posted @ 2012-06-04 21:24  Jack204  阅读(633)  评论(0编辑  收藏  举报