Scrivere un programma in C (in ambiente Linux) che crea un processo figlio con la fork, il processo figlio deve stampare a video il proprio PID, mentre il processo padre deve stampare sia il suo PID che quello del figlio appena creare.
Soluzione:
richiami:
PID:
Process ID, numero identificativo di ogni processo in esecuzione.
la fork() :
questa funzione crea un processo figlio, identico al processo chiamante, nel senso che a partire dal momento i cui viene chiamato, sia il processo figlio che il processo padre (chiamante ) condividono lo stesso codice e si eseguono in parallelo.
La fork(), restituisce zero al figlio e il PID del figlio lo restituisce al padre
getpid():
questa funzione estrae il PID del processo che l'ha chiamato.
il codice é il seguente:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main ()
{
int pid;
pid = fork();
if (pid < 0) {
printf("Something went wrong during the process creation");
exit(-1);
}
if (pid == 0){
printf("I'm a child and my pid is: %d\n", getpid() );
exit(0);
}//end if
printf("I'm a parent and my pid is : %d\n", getpid());
printf("I'm a parent and the child pid is : %d\n", pid);
return 0;
}
L'output del programma é il seguente:
I'm a parent and my pid is : 20969
I'm a child and my pid is: 20970
I'm the parent and the child pid is: 20970
NOTA: notate come la seconda printf viene eseguita prima della prima, questo e molto significativo perché il processo figlio e padre si eseguono in parallelo.
Nessun commento:
Posta un commento