- 论坛徽章:
- 0
|
SCO OpenServer 5 是SVR3.2的版本,支持的是/dev/spx流管道,与SVR4的pipe和BSD的socketpair不同。
根据man spx的说明,通过/dev/spx创建“无名流管道”,再通过mknod为无名流管道捆绑一个文件名成为“命名流管道”。man spx中提供了创建流管道的例子代码。
我的问题是:创建“命名流管道”成功后,如何使用?
假设我创建了一个命名流管道,文件名为"nspfile",有两个无关进程1和进程2,假设进程1要发送10个字节给进程2,我编写代码如下:
- 进程1:
- fd=open("nspfile",O_RDWR);
- write( fd, buf, 10 ); // success
-
- 进程2:
- fd=open("nspfile",O_RDWR);
- read( fd, buf, 10 ); // fail,errno=5
复制代码
运行结果是进程1的发送操作write成功,但是进程2接收操作read出错,errno=5,I/O错误
另外还试过按照FIFO的读、写分别打开,共打开两次的方法,也无法正确收发数据。
请教用过朋友正确的用法是怎样的? |
|