当先前未关闭fd时,Untarring文件失败

时间:2011-12-09 09:06:20

标签: c linux file tar file-descriptor

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

我无法这样做。但是如果我在关闭fd后提取文件,它可以正常工作。 我想知道可能是什么原因。

1 个答案:

答案 0 :(得分:2)

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

另外,您是否以读写模式打开文件?

修改

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