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