APUE mkfifo出错

运行环境:cygwin  执行时需在/tmp/file/目录下mkfile ff管道文件

出错:只要注释掉 printf ("fd1:%d\n", fd1);行就会出错。通常是写入成功,读取失败,欢迎读者解答,不胜感激。

#include

#include
#include
#include
#include
int main()
{
char buffer[80];
char s[] ="abcd";
int fd,fd1;
int ret=0, retw=0,retr=0;
unlink("/tmp/file/ff");
ret=mkfifo("/tmp/file/ff",0666);
if ( ret ==0 ) printf ("ok\n");
else printf ( "error.\n" );
if (fork() >0){
fd=open("/tmp/file/ff",O_WRONLY);
       printf ("fd:%d\n", fd);
retw=write(fd,s,sizeof(s));
printf ("retw:%d\n", retw);
close(fd);
}else{
fd1=open("/tmp/file/ff",O_RDONLY);
       printf ("fd1:%d\n", fd1);
lseek(fd1,0,SEEK_SET);
retr=read(fd1,buffer,80);
printf ("retr:%d\n", retr);
printf ("%s\n", buffer);
close(fd);
}
return 0;

}


你可能感兴趣的:(APUE mkfifo出错)