FIFO中的数据一直为0,求解释
风去沙来 2012-04-13 05:28:18 在网络编程第二卷的习题4.8中,代码程序:
int
main(int argc, char **argv)
{
int fd[2];
char buff[7] = "thisis";
struct stat info;
if (argc != 2)
err_quit("usage: test1 <pathname>");
Mkfifo(argv[1], FILE_MODE);
fd[0] = Open(argv[1], O_RDONLY | O_NONBLOCK);
fd[1] = Open(argv[1], O_WRONLY | O_NONBLOCK);
/* 4check sizes when FIFO is empty */
Fstat(fd[0], &info);
printf("fd[0]: st_size = %ld\n", (long) info.st_size);
Fstat(fd[1], &info);
printf("fd[1]: st_size = %ld\n", (long) info.st_size);
Write(fd[1], buff, sizeof(buff));
/* 4check sizes when FIFO contains 7 bytes */
Fstat(fd[0], &info);
printf("fd[0]: st_size = %ld\n", (long) info.st_size);
Fstat(fd[1], &info);
printf("fd[1]: st_size = %ld\n", (long) info.st_size);
Close(fd[0]);
Close(fd[1]);
Unlink (argv[1]);
exit(0);
}
运行结果为:
fd[0]: st_size = 0
fd[1]: st_size = 0
fd[0]: st_size = 0
fd[1]: st_size = 0
请问写入了7个字节后,为什么 还是0呢?