08/04/16

[C] Esercizio svolto: Uso della funzione getpid().

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