Arpeda
08-11-2002, 00:38
Ciao,
ho iniziato a cimentarmi con C ed ora sono arrivato alle fork.
Ho fatto questo programmino stupido:
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
int main() {
pid_t pid;
	
pid = fork();
if (pid == -1 ) {
fprintf(stderr,"forkfallita\n");
exit(1);
}
	
if (pid == 0) {
printf("FIGLIO --------- Mio PID %d\n",getpid());
printf("FIGLIO --------- PID del padre %d \n",getppid());
exit(0);
}
	
if (pid > 0) {
printf("PADRE ----------- Sono il padre %d \n",getpid());
printf("PADRE ----------- PID del filgio %d\n",pid);
exit(0);
}
printf("------------------------------\n");
exit(0);
}
però non capisco alcun cose:
1) perchè l'output non è sempre lo stesso? ovvero, pid a parte, perchè le istruzioni non vengono eseguite sempre nello stesso ordine?
FIGLIO --------- Mio PID 6291
FIGLIO --------- PID del padre 6290
PADRE ----------- Sono il padre 6290
PADRE ----------- PID del filgio 6291
PADRE ----------- Sono il padre 6298
FIGLIO --------- Mio PID 6299
FIGLIO --------- PID del padre 6298
PADRE ----------- PID del filgio 6299
2) perchè se uso ddd per debaggare il programma mi si stampa solo le informazioni inerenti al padre?
3) chi mi spiega come posso "lavorare" sul padre o sul figlio?
Nel frattempo continuerò a studiare. ;)
ciao
Arpeda
ho iniziato a cimentarmi con C ed ora sono arrivato alle fork.
Ho fatto questo programmino stupido:
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
int main() {
pid_t pid;
pid = fork();
if (pid == -1 ) {
fprintf(stderr,"forkfallita\n");
exit(1);
}
if (pid == 0) {
printf("FIGLIO --------- Mio PID %d\n",getpid());
printf("FIGLIO --------- PID del padre %d \n",getppid());
exit(0);
}
if (pid > 0) {
printf("PADRE ----------- Sono il padre %d \n",getpid());
printf("PADRE ----------- PID del filgio %d\n",pid);
exit(0);
}
printf("------------------------------\n");
exit(0);
}
però non capisco alcun cose:
1) perchè l'output non è sempre lo stesso? ovvero, pid a parte, perchè le istruzioni non vengono eseguite sempre nello stesso ordine?
FIGLIO --------- Mio PID 6291
FIGLIO --------- PID del padre 6290
PADRE ----------- Sono il padre 6290
PADRE ----------- PID del filgio 6291
PADRE ----------- Sono il padre 6298
FIGLIO --------- Mio PID 6299
FIGLIO --------- PID del padre 6298
PADRE ----------- PID del filgio 6299
2) perchè se uso ddd per debaggare il programma mi si stampa solo le informazioni inerenti al padre?
3) chi mi spiega come posso "lavorare" sul padre o sul figlio?
Nel frattempo continuerò a studiare. ;)
ciao
Arpeda