PDA

View Full Version : [C] Esempi con fork()


Manugal
02-12-2006, 18:01
Ciao a tutti!!

Sto cercando di capire il meccanismo della fork(). Allora mi viene chiesto di fare un programmino che esegue una fork, rimane in attesa che il figlio stampi un messaggio a video con successo e stampa un altro messaggio prima di uscire. Io ho scritto questo:


#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main(){
pid_t pid;
int status;
if((pid = fork()) < 0)
perror("Fork failed");
else if(pid == 0){
printf("Sono il figlio e sto scrivendo qualcosa su stdout\n");
exit(0);
}
else{
if(wait(&status) != pid)
perror("Wait failed");
printf("Mio figlio ha finito, quindi finisco pure io\n");
exit(0);
}
}


Faccio partire il programma ma non stampa nulla. Se lo faccio partire con gdb invece stampa. Perché? :confused:

Grazie.

andbin
02-12-2006, 18:18
Faccio partire il programma ma non stampa nulla. Se lo faccio partire con gdb invece stampa. Perché? :confused: Il programma è corretto e funziona.

Manugal
02-12-2006, 18:27
Allora ho problemi io col compilatore mi sembra tanto strano. Certe volte vanno e altre no. Che poi la cosa strana è che appena lo avevo scritto funzionava mentre ora non funziona più. :confused: :confused:

Manugal
02-12-2006, 18:49
Se dico perché non partiva mi ammazzate :D

Io nella shell scrivevo wait e non ./wait (e quindi la shell lo interpretava come un comando). :muro: :muro: :muro:

Grazie lo stesso.

andbin
02-12-2006, 20:10
Se dico perché non partiva mi ammazzate :D :D

Io nella shell scrivevo wait e non ./wait (e quindi la shell lo interpretava come un comando). :muro: :muro: :muro: Infatti 'wait' è un comando interno della bash, che fa praticamente la stessa cosa della funzione wait(), cioè aspetta la terminazione di un processo ...

Forse è meglio se cambi nome al tuo programma! ;)

DanieleC88
04-12-2006, 14:35
Io nella shell scrivevo wait e non ./wait (e quindi la shell lo interpretava come un comando). :muro: :muro: :muro:
Perdonami, io di solito sono uno che aiuta tutti quando può e non deride mai nessuno, però...

:rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl:
ROTFL!!!!!
:rotfl: :rotfl: :rotfl: :rotfl: :rotfl: :rotfl:

Concedimelo per questa volta - scusami, ma, sai, credo che dopo quasi 5 anni di forum questo sia l'errore più bello che io abbia mai letto. :D
:asd:

ciao ;)