Difference between revisions of "SYS CALL viste a lezione."

From Sistemi Operativi
Jump to navigation Jump to search
(Created page with "* FORK Crea un nuovo processo duplicando il processo chiamante. Il nuovo processo , chiamato figlio, é un duplicato esatto del processo chiamante , chiamato padre. esempio1...")
 
Line 14: Line 14:
 
printf("due %d %d  \n",getpid(), getppid() );
 
printf("due %d %d  \n",getpid(), getppid() );
 
}
 
}
 +
</syntaxhighlight>
 +
 +
esempio2(una piccola osservazione sull'eredità del buffer):
 +
<syntaxhighlight lang="C">
 +
#include <stdio.h>
 +
#include <unistd.h>
 +
 +
void main (void){
 +
printf("cucù! : ");      //notare la differenza se nella sringa metto \n
 +
if(fork())
 +
printf("uno  %d  %d \n", getpid(), getppid() );
 +
else
 +
printf("due %d %d  \n",getpid(), getppid() );
 +
}
 +
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 23:16, 8 November 2013

  • FORK

Crea un nuovo processo duplicando il processo chiamante. Il nuovo processo , chiamato figlio, é un duplicato esatto del processo chiamante , chiamato padre.

esempio1:

#include <stdio.h>
#include <unistd.h>

void main (void){     
	if(fork()){
	printf("uno  %d  %d \n", getpid(), getppid() ); // getpid() stampa il pid del processo corrente , getppid() stampa il pid del processo padre
        sleep(2);}   //se togliessimo lo sleep;il processo figlio stamperebbe come getppid() 1,perché essendo il padre terminato e lui rimasto orfano,il nuovo padre diventa init
	else
	printf("due %d %d  \n",getpid(), getppid() );
}

esempio2(una piccola osservazione sull'eredità del buffer):

#include <stdio.h>
#include <unistd.h>

void main (void){
	printf("cucù! : ");      //notare la differenza se nella sringa metto \n 
	if(fork())
	printf("uno  %d  %d \n", getpid(), getppid() );
	else
	printf("due %d %d  \n",getpid(), getppid() );
}