Har et lite pipe problem i programmet mitt, trenger hjelp til aa finne logikk feilen. Takk for all hjelp!
Beskrivelse:
Jeg har laget et program som sjekker om emails er gyldig. Jeg har skrevet en C server som mottar udp pakker med en email adresse per pakke. Selve verifiseringen skjer i et python script. Emailen som sjekkes blir gitt til python scriptet, i scriptet print('OK') om emailen er gyldig eller print('NO') om ikke gyldig. Problemet mitt er at den forste email pakken (mottatt) ikke printer ut noe, men ved alle senere pakker printes OK eller NO. Det er med andre ord noe feil i pipe logikken som forer til at forste gang fork() blir kjort saa leser ikke parent fra child. Noen som ser feil i koden? Har sittet aa sett paa dette i flere timer naa, og dermed blitt kodeblind, mulig jeg ikke helt fatter piping...
Beskrivelse:
Jeg har laget et program som sjekker om emails er gyldig. Jeg har skrevet en C server som mottar udp pakker med en email adresse per pakke. Selve verifiseringen skjer i et python script. Emailen som sjekkes blir gitt til python scriptet, i scriptet print('OK') om emailen er gyldig eller print('NO') om ikke gyldig. Problemet mitt er at den forste email pakken (mottatt) ikke printer ut noe, men ved alle senere pakker printes OK eller NO. Det er med andre ord noe feil i pipe logikken som forer til at forste gang fork() blir kjort saa leser ikke parent fra child. Noen som ser feil i koden? Har sittet aa sett paa dette i flere timer naa, og dermed blitt kodeblind, mulig jeg ikke helt fatter piping...
Kode
while(1) { [some code] switch (fork()) { case 0: /* child */ dup2(mypipe[1],1); close(mypipe[0]); (void) close(sock); execl("/usr/bin/python2.5", "python2.5", "verify.py", email, "-u", (char *) 0); exit(0); default: /* parent */ close(mypipe[1]); read(mypipe[0], buf, SIZE); memset(email, 0, sizeof(email)); break; case -1: my_error(__FILE__, __LINE__, "fork error"); exit(10); } end while
Sist endret av Camv; 15. februar 2009 kl. 05:58.