ouvrir () un fichier et écrire à la fin

Je travaille actuellement sur un programme shell C avec un peu de pipe() et de redirection.

Je redirige avec dup2() stdout et stderr (1 & 2).

Lorsque j’ouvre un fichier avec int fd = open("test.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); avec une boucle à imprimer "---------\n" pour tout séparer, il apparaît parfois, parfois il ne le fait pas et parfois il efface ce qui était écrit auparavant.

Quelqu’un a-t-il une explication?

Je voudrais que chaque nouveau texte arrive à la fin de ce qui a été écrit auparavant dans le fichier.

C’est à quoi O_APPEND indicateur O_APPEND . Lorsqu’un fichier peut être mis à jour à partir d’un autre processus à tout moment, vous avez besoin de O_APPEND pour vous assurer que votre write sera toujours à la fin.