管道

    管道有种类型,命名管道和匿名管道。匿名管道用于父进程和子进程之间,命名管道用于一个计算机上平行的进程之间。

1. 可用pipe系统调用在父子进程间创建管道,它返回一对文件描述符:

函数调用传递一个含有两个整数的数组,如果运行成功,返回两个文件描述符,数组中第一个文件描述符用用于只读,第二个只写。因为子进程可以继承父进程的文件描述符,父进程可以在fork之前创建管道以用于父子进程的通信。

2. 命名管道通过mkfifo或mknod函数在磁盘上创建了一些特殊文件来进行识别。

mkfifo和mknod一般都可以用于shell命令使用。一个命名管道可以被打开和读写,就像一个普通文件使用open read write系统调用一样。

当一个进程打开一个命名管道进行读操作时,这个进程会阻塞,直到其他的进程打开这个管道进行写操作,反之亦然。所以命名管道在进程同步中非常有意义。

posted @ 2011-05-16 18:06  elwin  阅读(210)  评论(0编辑  收藏  举报