我在这里试图读取 fileDesc 的内容,它是一个文件描述符,指向文本文件到管道的一端* pipe_d [1] *当时有一个字符。这样可以正确地打印文件中的字符,但我相信我的 write()会尝试将字符的内存地址写入管道而不是字符,如果我这样做的话。
char x;
FILE *file;
file = fdopen(fileDesc, "a+");
while((x = fgetc(file)) != EOF)
{
printf("%c", x);
write(pipe_d[1], &x, sizeof(x));
}
我希望将位于& x上的字符写入管道。有什么想法吗?
提前谢谢!
答案 0 :(得分:0)
x有一个问题:它是一个char,它不能包含值EOF, 这一行:
while((x = fgetc(file)) != EOF)
将始终评估为true,使程序永远运行。
将x声明为int
将解决此问题。
如果您希望以char-by-char为基础,还应fdopen(pipe_d[1], "w")
并使用fputc(fp, x)
来编写管道。
此时此时没有致电pipe(pipe_d)
;你发了一个吗?
没有fork()
的电话,那么管道的读者是谁?如果不是,程序将在管道填满后阻塞。