The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Di programmazione ad alto livello
.
google unix.com



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

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 06-19-2009
ajaysahoo ajaysahoo is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2008
Interventi: 14
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);
  #2 (permalink)  
Old 06-19-2009
GaneshCPUX GaneshCPUX is offline
Utente Registrato
  
 

Iscriviti Data: maggio 2009
Interventi: 20
Si prega di verificare se fpWriteFile e valido fpWriteFileare puntatori. La maggior parte delle volte questi sono i punti di dolore.
  #3 (permalink)  
Old 06-19-2009
rakeshawasthi rakeshawasthi is offline
Utente Registrato
  
 

Join Date: Aug 2004
Località: India
Messaggi: 379
Non hai inizializzato recvgen. Voglio dire, non vi è alcun valore in questo senso.
PS: - utilizzare il codice tag nel codice per favore.
  #4 (permalink)  
Old 06-19-2009
ajaysahoo ajaysahoo is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2008
Interventi: 14
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)
  #5 (permalink)  
Old 06-19-2009
rakeshawasthi rakeshawasthi is offline
Utente Registrato
  
 

Join Date: Aug 2004
Località: India
Messaggi: 379
Codice:
memset(recvgen,'\0',NSE_MAX_PACKET_RECV_SIZE);
debug e vedere esattamente che cosa sono i valori di ogni variabile e precisamente a partire dalla quale si sono sempre stato di errore. printf per questo uso.
  #6 (permalink)  
Old 06-19-2009
ajaysahoo ajaysahoo is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2008
Interventi: 14
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
  #7 (permalink)  
Old 06-19-2009
redoubtable redoubtable is offline
Utente Registrato
  
 

Join Date: Aug 2008
Posizione: Portogallo
Interventi: 242
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
Se non avrà un segfault adesso, puoi provare ad eseguire il debug solo con printf () s e trovare il problema.
Reply

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 04:33 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0