当fd之前没有关闭时,解压缩文件失败



考虑以下场景:我正在打开一个tar文件(例如abc.tar.gz),写入数据,并且在关闭文件描述符之前,我试图提取相同的文件。

我不能这样做。但是如果我在关闭fd后提取文件,它工作得很好。我想知道是什么原因。

所有文件都有一个位置用于读取或写入数据。写入文件后,位置位于末尾。试图阅读将试图从那个位置阅读。您必须使用lseek等函数将位置更改为文件的开头。

还有,你是否同时以读和写模式打开文件?

编辑

看完你的注释后,我发现你实际上并没有从程序内部读取文件,而是从外部程序读取文件。那么它可能就像不将文件刷新到磁盘一样简单,这在关闭文件时会自动发生。您可能需要检查fsync函数,或者sync函数。

相关内容

  • 没有找到相关文章

最新更新