Exemple: Producteur-Consommateur à 1 place

#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