我已经使用 write() 函数将一些文本写入文件,如下所示
if (write(3,buffer,1024) > 0)
return true;
return false;
当我手动查看该文件时,我找到了我放入缓冲区的文本。
但是当我尝试像这样从同一个文件中读取文本时
if (read(3,temp,5) > 0)
return true;
return false;
相反,我打印了 read 返回的值。为零。
谁能解释一下是什么问题?
提前致谢
最佳答案
3
是什么文件?不要像那样硬编码文字数字。使用预设的符号名称,如 STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO 等,或者您从 open() 或 create() 获得的文件描述符值。
无论如何,什么有效取决于您如何打开它们。如果你打开一个文件只是为了写,你将无法从中读取,等等。如果你只是写入一个文件,你必须将它的文件指针重置到开头,然后才能读回你的内容写了。
所以向我们展示更多您的代码(例如您如何打开文件),人们将能够帮助您。我猜你忘了重置文件指针。所以尝试:
lseek(3, 0, SEEK_SET);
在您尝试读取文件 3
之前。我仍然认为 literal 作为文件描述符非常可疑。它当然看起来不太便携。
关于c++ - 在 C++ 中读取返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7312480/