probléme avec écriture de fichiers - SIGCHLD
Bonjour
J'ai un problème avec l'écriture d'un fichier sur une machine solaris, la premiére fois que j'écris dans le fichier çà marche , par contre la seconde fois çà plante (un signal SIGCHLD est levé et l'application se plante).
l'erreur est dans l'écriture du fichier, le fprintf (j'ai tracé l'application). J'ai essayé avec fprintf , fputs et fwrite, à chaque fois,c'est pareil çà plante la seconde fois lors de l'écriture dans le fichier.
est ce que quelqu'un a une idée ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| struct msgin_log * pin;
struct msgout_log * pout;
char * c;
char Buffer[2048];
char fname[255];
time_t ti;
struct tm * tm = NULL;
FILE * fp = NULL;
pin = (struct msgin_log *)msg->data_in;
pout = (struct msgout_log *)msg->data_out;
msg->len_out = sizeof (struct msgout_log);
memset (pout, 0, sizeof (struct msgout_log));
// reconstitution du nom du fichier de log support_sofi.client.yyyy-mm-dd.log
time (&ti);
tm = localtime (&ti);
strncpy ( Buffer, pin->InMsg, 2048 );
sprintf ( fname, "support_sofi.client.%04d-%02d-%02d.log", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday );
fp = fopen (fname, "a");
if ( fp != NULL )
{
//fprintf ( fp,"%s", Buffer );
//fwrite (Buffer , 1 , sizeof(Buffer) , fp );
fputs(Buffer,fp);
fclose (fp);
fp = NULL;
}
//strcpy ( pout->OutMsg, "" );
trace ("_log end");
} |
version de la machine
Code:
SunOS 5.10 Generic_120011-14 sun4u sparc SUNW,Sun-Fire-V440
un fichier core est généré lors du plantage, malheureusement je ne peux pas l'analyser gdb et objdump ne sont pas installé sur la machine.