2011-08-21 25 views
5

Estoy tratando de abrir un archivo en el modo de agregar usando la llamada de API abierta(), ¡pero el siguiente código no funciona! ¡No está escribiendo nada para archivar! aquí está mi código:Abrir el archivo en el modo Agregar: usando abrir() API

enter image description here

+0

Parece que debería funcionar. –

+0

Además, ¿cuál es el resultado de ejecutar su programa bajo strace? ¿Cómo falla? – bdonlan

+1

¿Ha comprobado cuál es el valor 'n' devuelto por' write'? use printf para imprimirlo y luego verifique. Además, 'cierra' el archivo después de haberlo escrito. –

Respuesta

14

O_APPEND no es un modo por sí mismo; es una bandera Como el valor de O_RDONLY es 0, es como si estuviera intentando abrir el archivo de solo lectura pero para agregarlo, lo cual no tiene sentido. Use O_WRONLY|O_APPEND o O_RDWR|O_APPEND.

+0

Estrictamente hablando, usar abierto sin ninguno de 'O_RDONLY',' O_RDWR', o 'O_WRONLY' es un comportamiento indefinido. En el caso específico de Linux,' O_RDONLY = 0 ', por lo que resulta ser así. – bdonlan

+0

ok! ¡No lo sabía! ¡Gracias! –

+0

Por lo que sé,' O_RDONLY' es 0 en todas las implementaciones históricas. –

Cuestiones relacionadas