本人也在学习阶段,如有错误或不合理指望,还望指出。Email:478712565@qq.com 欢迎交流
作者:jackie 2013/8/26
一、命名管道的创建
1、 shell
# mkfifo filename
2、C语言
# include < sys / types.h >
# include < sys / stat.h >
int mkfifo ( const char * pathname, mode_t mode );
函数如果成功返回0,出 错返回–1,并更改errno的值。errno有可能出现的值为:EACCESS、EEXIST、ENAMETOO- LONG、ENOENT、ENOSPE、ENOTDIR和EROFS。
二、 例子
FIFO的另一个应用是在客户机和服务器之间传送数据。如果一个服务器端有多个客户端连接,每个客户端将的请求发送到公共的FIFO中(所有需与服务器联系的客户机都知道该 FIFO的路径名)。图1显示了这种安排。
在这种类型的客户机 -服务器通信中使用 FIFO的问题是:在多个客户端连接到服务器时候,服务器如何响应各个服务器呢?一种解决方法是每个客户端发送请求时,在其中发送其进程ID,之后服务器创建的专用FIFO与其进程ID联系起来,这样就解决了该问题。例如,服务器可以用名字 /tmp/server.XX创建FIFO,其中XX被替换成客户机的进程ID。图2显示了这种安排。