标签: c linux file tar file-descriptor
考虑以下场景:我打开一个tar文件(例如abc.tar.gz),写入数据,在关闭文件描述符之前,我试图提取相同的文件。
我无法这样做。但是如果我在关闭fd后提取文件,它可以正常工作。 我想知道可能是什么原因。
答案 0 :(得分:2)
所有文件都有一个位置,用于读取或写入数据。写入文件后,位置结束。试图阅读将尝试从该位置读取。您必须使用lseek等函数将位置更改为文件的开头。
lseek
另外,您是否以读写模式打开文件?
阅读完评论后,我发现你实际上并没有从程序中读取文件,而是从外部程序读取文件。然后它可能就像你没有将文件刷新到磁盘一样简单,这在关闭文件时会自动发生。您可能需要检查fsync函数,或sync函数。
fsync
sync