Difference between revisions of "ProvaPratica 2009.01.15"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| Stefano 92 (talk | contribs)  (Created page with "<h1>http://www.cs.unibo.it/~renzo/so/compiti/2009-01-15.pdf</h1>   == Esercizio 1 ==  <syntaxhighlight lang="C">  #include <stdio.h> #include <stdlib.h> #include <unistd.h>  i...") | Stefano 92 (talk | contribs)  | ||
| Line 2: | Line 2: | ||
| − | == Esercizio 1 == | + | == Esercizio 1 e 2 == | 
| <syntaxhighlight lang="C"> | <syntaxhighlight lang="C"> | ||
| + | /* | ||
| + | Esercizio1 (obbligatorio): (15 punti) Scrivere un programma in linguaggio C "respawn" che provveda a riattivare un  | ||
| + | programma quando questo termina (Naturalmante o erroneamente). Es: | ||
| + | respawn test a b c | ||
| + | lancia il programma "test a b c". Se e quando questo dovesse terminare ne viene lanciato un altro uguale. | ||
| + | |||
| + | Esercizio 2: completamento dell'esercizio 1. (5 punti) | ||
| + | Modificare il programma dell'esercizio 1 per riattivare il programma solo se termina in modo anormale (per un segnale) | ||
| + | |||
| + | */ | ||
| #include <stdio.h> | #include <stdio.h> | ||
| #include <stdlib.h> | #include <stdlib.h> | ||
Latest revision as of 15:05, 28 April 2014
http://www.cs.unibo.it/~renzo/so/compiti/2009-01-15.pdf
Esercizio 1 e 2
/*
Esercizio1 (obbligatorio): (15 punti) Scrivere un programma in linguaggio C "respawn" che provveda a riattivare un 
programma quando questo termina (Naturalmante o erroneamente). Es:
respawn test a b c
lancia il programma "test a b c". Se e quando questo dovesse terminare ne viene lanciato un altro uguale.
Esercizio 2: completamento dell'esercizio 1. (5 punti)
Modificare il programma dell'esercizio 1 per riattivare il programma solo se termina in modo anormale (per un segnale)
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char*argv[])
{
	int ris;
	ris=fork();
	while(ris>0)
	{
		printf("%d\n",ris);
		wait(&ris);
		if (WIFSIGNALED(ris))
			ris=fork();
		else
			return(0);
	}
	execvp(argv[1],argv+1);
	return(0);
}
stefano92