Place de parking:
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include "semaph.h"
/* prototypes de P,V,
creer_semaphore, etc. */
main()
{int place,i;
place=CreerSemaphore(1000, 1);
/* création d'un sémaphore de clé
externe 1000 */
for(i=0;i<2;i++){
if (fork()==0)
/* création
d'un véhicule */
{
/* c'est un véhicule */
pid = getpid();
printf("un processus voiture créé:
%d\n", pid);
srand(pid);
/* initialisation du générateur de nombre
*/
sleep(rand()%10);
/* mise
en sommeil (<10 secondes) */
P(place)
/* demande l'accès à la place */
printf("Le véhicule %d se
gare", pid);
sleep(rand()%10);
printf("Le véhicule %d sort
de la place", pid);
V(place);
/* libère la place */
sleep(rand()%10);
exit(0);
} }
/* c'est le père, processus maître */
wait(0);
/* attendre la fin d'un fils (véhicule) */
wait(0);
/* attendre la fin d'un fils (véhicule) */
DetruireSemaphore(place);
}