The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > High Level Programmering
.
google unix.com



High Level Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
segmentering skyld joey High Level Programmering 3 12-22-2008 05:28
Segmentering skyld big123456 Linux 0 07-20-2007 06:01
fwrite kast segmentering skyld fermisoft High Level Programmering 6 09-13-2005 02:46
Segmentering skyld jshaulis AIX 1 06-01-2004 05:16
segmentering skyld omran High Level Programmering 2 08-01-2003 09:19

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 06-19-2009
ajaysahoo ajaysahoo is offline
Registrert bruker
  
 

Bli Date: Feb 2008
Innlegg: 14
segmentering skyld i fwrite funksjon

Hei,
min-koden er skrevet i proc og det er i Unix (AIX). Jeg har skrevet en liten kode for å skrive data inn i en binær fil, men mens du skriver min programmet gir core dump.

Her er min kode ----

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
Registrert bruker
  
 

Bli Dato: mai 2009
Innlegg: 23
Vennligst sjekk om fpWriteFile og fpWriteFileare gyldig pekere. Mesteparten av tiden er det disse smerte poeng.
  #3 (permalink)  
Old 06-19-2009
rakeshawasthi rakeshawasthi is offline
Registrert bruker
  
 

Bli Dato: Aug 2004
Location: India
Innlegg: 379
Du har ikke initialisert recvgen. Jeg mener, det er ingen verdi i det.
PS: - bruk koden kodene i koden din kan du.
  #4 (permalink)  
Old 06-19-2009
ajaysahoo ajaysahoo is offline
Registrert bruker
  
 

Bli Date: Feb 2008
Innlegg: 14
Jeg mottar data fra socket ... Vær finne kodene for det ...

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
Registrert bruker
  
 

Bli Dato: Aug 2004
Location: India
Innlegg: 379

Code:
memset(recvgen,'\0',NSE_MAX_PACKET_RECV_SIZE);

debug det og se hva er verdiene for hver variabel og nøyaktig som statement er det du får feilmelding. bruk printf for dette.
  #6 (permalink)  
Old 06-19-2009
ajaysahoo ajaysahoo is offline
Registrert bruker
  
 

Bli Date: Feb 2008
Innlegg: 14
Jeg gjorde følgende kode endre ...
memset (recvgen, '\ 0', NSE_MAX_PACKET_RECV_SIZE);


fortsatt samme problemet i debug bruke dbx ... dens viser segmentering feil på fwrite.

også sizeof (recvgen) er 4 hvor jeg har definert NSE_MAX_PACKET_RECV_SIZE \u003d 1050
  #7 (permalink)  
Old 06-19-2009
fryktinngytende redoubtable is offline
Registrert bruker
  
 

Bli Dato: Aug 2008
Beliggenhet: Portugal
Innlegg: 242
Jeg gjetter problemet er enten i WriteFileName eller fwriting til en lukket strøm på grunn av feilaktig bekreftelse hvis fopen () mislykkes.

Følgende kode fungerer under Linux

Code:
#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);
}


Code:
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

Du vil ikke ha en segfault nå, kan du prøve å bare debug det med printf () s, og finne ut problemet.
Reply

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 10:26.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0