#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include "semaph.h"
/* prototypes de P,V,
creer_semaphore, etc. */
main()
{int libre,occupe,i,memnum;
int* place;
libre=CreerSemaphore(1010, 1); /* création d'un sémaphore de clé
externe 1010 */
occupe=CreerSemaphore (1011, 0);
memnum=shmget(1020,sizeof(int),0666|IPC_CREAT); /* Création d'une mémoire partagée memnum
*/
place=shmat(memnum,NULL,0);
if (fork()==0)
{
/* fils = consommateur */
for (i=0;i<10;i++){
P(occupe);
printf("Je consomme %d", *place);
V(libre);}
exit(0);}
else
/* père = producteur
*/
{ for (i=0;i<10;i++) {
P(libre);
*place = i;
printf("Je produis %d", *place);
V(occupe);}
wait(0);
DetruireSemaphore(libre);
DetruireSemaphore(occupe);
shmclt(memnum, IPC_RMID, NULL);
}}
suivant plan