Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[unix] Escribiendo al final de un fichero

Estas en el tema de [unix] Escribiendo al final de un fichero en el foro de C/C++ en Foros del Web. Hola a todos Hacia un tiempo que no me pasaba por aqui (desde que deje de usar c) pero ahora me ha surgido un pequeño ...
  #1 (permalink)  
Antiguo 19/04/2011, 03:54
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 0
Pregunta [unix] Escribiendo al final de un fichero

Hola a todos

Hacia un tiempo que no me pasaba por aqui (desde que deje de usar c) pero ahora me ha surgido un pequeño trabajo en el cual necesito su ayuda.

Estoy realizando un programa que funcione como un chat y para ello estoy utilizando sockets. Bien, una de las mejoras propuestas es poder almacenar un log con la conversación y para ello he pensado usar un fichero que haga de log.

Como el código es muy largo, pondre la parte que no me funciona:

Código:
                        ch[tamlectura] = 0;
                        strcpy (strn, nomusers[fd[i]]);
                        strcat (strn, " : ");
                        strcpy (ch2, nomusers[fd[i]]);
                        strcat (ch2, " @@ ");
                        strcat (ch2, ch);
                        strcat (ch2, "\n");
			strcpy (nomfile, "test");
                        disco = open (nomfile, O_WRONLY);
                        write (disco, &ch2, tamlectura + tamnom1 + 3);
                        close (disco);
Como veis, estoy usando las funciones genericas de Unix usando descriptores de ficheros en lugar de usar las propias de C con los stream.

Esta parte del código realiza lo que se espera (escribir nombre + " : " + mensaje en el fichero) pero me aplasta el contenido anterior en lugar de escribirlo al final.

¿Alguna sugerencia para resolver este lio (aparte de usar stream)?

Un saludo
  #2 (permalink)  
Antiguo 19/04/2011, 04:11
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: [unix] Escribiendo al final de un fichero

Doble post para indicar que ya he encontrado la solución.

Para los interesados, bastaba con utilizar lseek

Código HTML:
http://linux.about.com/library/cmd/blcmdl2_lseek.htm
AL final el código me quedo asi

Código:
                        
                        ch[tamlectura] = 0;
                        strcpy (strn, nomusers[fd[i]]);
                        strcat (strn, " : ");
                        strcpy (ch2, nomusers[fd[i]]);
                        strcat (ch2, " @@ ");
                        strcat (ch2, ch);
                        strcat (ch2, "\n");
			strcpy (nomfile, "test");
                        disco = open (nomfile, O_WRONLY);
                        lseek (disco, 0, SEEK_END);
                        write (disco, &ch2, tamlectura + tamnom1 + 3);
                        close (disco);
Un saludo a todos

Etiquetas: escritura, fichero, final, lenguaje_c, linux, programacion, ubuntu, unix
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:54.