Barman
Barman
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
void demander_verre(int n)
{
printf("Client:I want glass %d ! \n", n);
sleep(4);
kill(getppid(), SIGCONT);
}
void servir_verre(int n)
{
printf("Bartender:Here is glass %d ! \n", n);
}
pid = fork();
switch (pid)
{
case -1:
{
error("error while forking");
}
case 0:
{
demander_verre(1);
kill(getpid(), SIGSTOP);
demander_verre(2);
exit(0);
}
default:
{
kill(getpid(), SIGSTOP);
servir_verre(1);
sleep(4);
kill(pid, SIGCONT);
kill(getpid(), SIGSTOP);
servir_verre(2);
wait(&status);
exit(0);
}
}
return 0;
}