覆盖文件内容linux系统调用

覆盖文件内容linux系统调用,linux,linux-kernel,Linux,Linux Kernel,我可以在“打开”系统调用中使用O_append标志将一个文件内容附加到另一个文件内容。但是在覆盖现有内容方面做了很多努力。当我尝试在没有任何标志的情况下仅使用O_WRONLY打开文件时,它不会覆盖现有内容。有人能告诉我这一点吗?要么添加O_TRUNC(如果你想扔掉前面的所有东西),要么将fd搜索到0(如果你想像插入光标一样在其上“插入”)。请注意,您可能无法立即看到更改-这是因为缓冲I/O。您可以使用O_SYNC来确保每次写入都被刷新。(但可能不这样做。)由write()执行的任何缓冲都是透明的

我可以在“打开”系统调用中使用O_append标志将一个文件内容附加到另一个文件内容。但是在覆盖现有内容方面做了很多努力。当我尝试在没有任何标志的情况下仅使用O_WRONLY打开文件时,它不会覆盖现有内容。有人能告诉我这一点吗?

要么添加O_TRUNC(如果你想扔掉前面的所有东西),要么将fd搜索到0(如果你想像插入光标一样在其上“插入”)。请注意,您可能无法立即看到更改-这是因为缓冲I/O。您可以使用O_SYNC来确保每次写入都被刷新。(但可能不这样做。)

write()
执行的任何缓冲都是透明的(在某些网络文件系统上除外)。在许多情况下,它可能是不透明的,NFS是出了名的。因此,“可能看不见…”