Bonjour,
Voila que j'ai un probleme les semaphores et voici une partie du code
que d'un tuto de ce site:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
int binary_semaphore_wait (int semid)
{
  struct sembuf operations[1];
  /* Utilise le premier (et unique) sémaphore.  */
  operations[0].sem_num = 0;
  /* Décrémente d'une unité. */
  operations[0].sem_op = -1;
  /* Autorise l'annulation. */
  operations[0].sem_flg = SEM_UNDO;
 
  return semop (semid, operations, 1);
}
 
/* Envoie un signal de réveil à un sémaphore binaire : incrémente sa valeur
   d'une unité. Sort de la fonction immédiatement. */
int binary_semaphore_post (int semid)
{
  struct sembuf operations[1];
  /* Utilise le premier (et unique) sémaphore. */
  operations[0].sem_num = 0;
  /* Incrémente d'une unité. */
  operations[0].sem_op = 1;
  /* Autorise l'annulation. */
  operations[0].sem_flg = SEM_UNDO;
 
  return semop (semid, operations, 1);
}
mon probleme c'est ce que le processus ne se bloque quand il trouve la valeur du semaphore 0 ça en premier temps.

maintenant en changeant (operation[0].sem_flg = 0) ça marche; mais dés que j'introduit le signal Ctl+c que j'ai traité dans programme je tombe sur la premiere erreur