ProvaPratica 2009.01.15

From Sistemi Operativi
Jump to navigation Jump to search

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