1

对于作业,我必须从标准输入中读取,将其保存到文件中,然后在另一个进程中读取文件。但是,我对为什么这段代码不起作用感到困惑:

    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 个字节,但缓冲区本身有正确的信息....有人可以帮助他们看看我哪里出错了吗?

我可以对文件名使用进程,它可以正确读取它们。

4

1 回答 1

5

您已O_TRUNC | O_CREAT为打开标志指定,但您未能指定O_RDWRor O_WRONLY

您可能还想写入n字节,而不是sizeof(buf),因为剩余的sizeof(buf) - n字节未初始化。

于 2012-11-11T01:10:18.430 回答