对于作业,我必须从标准输入中读取,将其保存到文件中,然后在另一个过程中读取文件。但是,我很困惑为什么这段代码不起作用:
while((n = read(0,buf,sizeof(buf))) > 0) {
int tempfile = open("testfile", O_TRUNC | O_CREAT, 0666);
write ( tempfile , buf , sizeof(buf) );
close(tempfile);
process("testfile");
}
我不应该使用任何stdio东西。
当我查看我创建的文件时,它有0个字节但缓冲区本身有正确的信息....有人可以帮我们看看我哪里出错了吗?
我可以在文件名上使用进程并正确读取它们。
答案 0 :(得分:5)
您已为开放标记指定了O_TRUNC | O_CREAT
,但未指定O_RDWR
或O_WRONLY
。
您可能还想写n
个字节,而不是sizeof(buf)
,因为剩余的sizeof(buf) - n
字节未初始化。