打开()一个文件并在最后写入

open() a file and write at the end

我目前正在开发一个 C shell 程序,其中包含一些 pipe() 和重定向。

我使用 dup2() stdoutstderr (1 & 2) 重定向。

当我用 int fd = open("test.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); 打开一个文件时,循环打印 "---------\n" 以分离所有内容,有时它出现,有时不出现,有时它删除之前写的内容。

有人解释了吗?

我希望每个新文本都到达文件中之前写入内容的末尾。

这就是 O_APPEND 标志的用途。当文件可以随时从另一个进程更新时,您需要 O_APPEND 以确保您的 write 始终位于末尾。