open()一个文件并在最后写

时间:2015-11-27 18:12:05

标签: c shell unix stdout stdin

我目前正在开发一个带有pipe()和重定向的C shell程序。

我使用dup2() stdout stderr (1& 2)进行重定向。

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

有人有解释吗?

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

1 个答案:

答案 0 :(得分:3)

这就是O_APPEND标志的含义。当文件可以随时从其他进程更新时,您需要O_APPEND以确保您的write始终在最后。