考虑以下场景:我正在打开一个tar文件(例如abc.tar.gz),写入数据,并且在关闭文件描述符之前,我试图提取相同的文件。
我不能这样做。但是如果我在关闭fd后提取文件,它工作得很好。我想知道是什么原因。
所有文件都有一个位置用于读取或写入数据。写入文件后,位置位于末尾。试图阅读将试图从那个位置阅读。您必须使用lseek
等函数将位置更改为文件的开头。
还有,你是否同时以读和写模式打开文件?
编辑
看完你的注释后,我发现你实际上并没有从程序内部读取文件,而是从外部程序读取文件。那么它可能就像不将文件刷新到磁盘一样简单,这在关闭文件时会自动发生。您可能需要检查fsync
函数,或者sync
函数。