![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Di programmazione ad alto livello Pubblica domande su C, C + +, Java, SQL, e di altri linguaggi di programmazione qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| segmentation fault | joey | Di programmazione ad alto livello | 3 | 12-22-2008 05:28 PM |
| Segmentation fault | big123456 | Linux | 0 | 07-20-2007 05:01 AM |
| fwrite getta segmentation fault | fermisoft | Di programmazione ad alto livello | 6 | 09-13-2005 01:46 AM |
| Segmentation fault | jshaulis | AIX | 1 | 06-01-2004 04:16 PM |
| segmentation fault | OMRAN | Di programmazione ad alto livello | 2 | 08-01-2003 08:19 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
segmentation fault in funzione fwrite
Salve,
il mio codice è scritto in proc ed è in UNIX (AIX). Ho scritto un piccolo codice per la scrittura dei dati in un file binario, ma durante la scrittura del programma è dare il mio core dump. Ecco il mio codice ---- fpWriteFile \u003d fopen (WriteFileName, "wb +"); CHAR * recvgen; recvgen \u003d (char *) malloc (sizeof (char) * NSE_MAX_PACKET_RECV_SIZE); fwrite (recvgen, NSE_MAX_PACKET_RECV_SIZE, 1, fpWriteFile); |
|
||||
|
Sono la ricezione di dati da presa ... Si prega di trovare i codici per la ...
memset (recvgen, '', NSE_MAX_PACKET_RECV_SIZE); recv_bytes \u003d recvfrom (sockfd1, recvgen, NSE_MAX_PACKET_RECV_SIZE, 0, (struct sockaddr *) & serv_addr, & clilen) |
|
||||
|
Codice:
memset(recvgen,'\0',NSE_MAX_PACKET_RECV_SIZE); |
|
||||
|
ho fatto cambiare il codice riportato di seguito ...
memset (recvgen, '\ 0', NSE_MAX_PACKET_RECV_SIZE); ancora stesso problema, eseguire il debug utilizzando i dbx mostrando la sua ... a fwrite segmentation fault. anche sizeof (recvgen) è di 4 dove ho definito NSE_MAX_PACKET_RECV_SIZE \u003d 1050 |
|
||||
|
Sto indovinando il problema è in WriteFileName o fwriting ad un flusso chiuso a causa di improprio verifica se fopen () non riesce.
Il seguente codice funziona sotto Linux Codice:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define NSE_MAX_PACKET_RECV_SIZE 1050
int
main(int argc, char *argv[])
{
FILE *fpWriteFile;
char *recvgen;
char WriteFileName[1024];
if (argc != 2)
exit(1);
strncpy(WriteFileName, argv[1], 1024);
if (strlen(argv[1]) >= 1024)
WriteFileName[1023] = '\0';
fpWriteFile = fopen(WriteFileName,"wb+");
if (fpWriteFile == NULL)
exit(1);
recvgen = (char *)malloc(sizeof(char)*NSE_MAX_PACKET_RECV_SIZE);
if (recvgen == NULL)
exit(1);
fwrite (recvgen,NSE_MAX_PACKET_RECV_SIZE,1,fpWriteFile);
exit (0);
}
Codice:
cc -o file file.c ./file `perl -e 'print "A" x 10'` && echo $? -> OK: 0 ./file `perl -e 'print "A" x 1024'` ; echo $? -> NOT OK (failing with filename too long): 1 |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|