for (i=0; i<n; i++) fork();
n=1
, n=2
et n=3
fonction(char *c[2],char *f[3]);
réalisant par appels à des fonctions POSIX (system()
est interdit) «l'équivalent» de la commande shell: c[0] <f[0] 2>f[1] | c[1] >f[2]
raise(int signal);
SIGUSR1
, permettant d'afficher la chaîne;
SIGUSR2
, permettant de supprimer un caractère sur deux de la chaîne.
Il est demandé d'implémenter la fonction de prototype
int addalarm(int n,void (*f)());
permettant au processus appelant d'enregistrer une alarme supplémentaire (à celles déjà enregistrées par des appels à cette même fonction). L'enregistrement d'une alarme correspond au déclenchement d'un minuteur d'une durée de n
secondes. Lorsque le délai est écoulé, le processus est alors interrompu et la fonction pointée par f
passé en paramètre à l'enregistrement est appelée. L'appel renvoie l'identité de l'alarme.
En outre une fonction de prototype void removealarm(int id);
devra permettre de désenregistrer une alarme dont l'identité id
a été précédemment obtenue par un appel à addalarm()
.
int alarm(int n);
permet d'enregistrer un minuteur d'une durée de n
secondes, que le minuteur précédent est annulé mais que le délai restant avant son déclenchement est alors renvoyé par la fonction. Le déclenchement du minuteur provoque l'envoi au processus d'un exemplaire du signal SIGALRM
.