Je suis très peu expérimenté dans la programmation c, et pour la fac les profs nous demande d'implémenter le problème des fumeurs (synchronisation de processus via des sémaphores).
Je pense que le problème vient d'une mauvaise connaissance du langage, mais malgré plusieurs essais, je ne trouve pas mon erreur, si vous pouviez m'aider.

Voici donc le debut code
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
 
#include <stdio.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#include <stdlib.h>
#include <semaphore.h>       
#include <assert.h>
#include <errno.h>
#include <signal.h>
 
 
sem_t elements [3];	// les elements necessaires au fumeur sont stockés sous forme de tableau de semaphores, remplacer le type int par un type de semaphores, pui effectuer des modifs dans up et dans down
 
void init_sem(){	//initialise notre tableau de semaphore (toutes les semaphores a 1)
	sem_init (&elements[0],1,0); 
	sem_init (&elements[1],1,0);
	sem_init (&elements[2],1,0);
};
 
 
void down(int a){
	sem_wait(&elements[a]);
};
 
void up(int a){
	sem_post(&elements[a]);
};
Et voici l'erreur qui m'est renvoyée quand je compile
(commande tapée "gcc fum2.c") et j'ai testé aussi "g++ fum2.cpp" (en renommant le .c en .cpp, la meme erreur est sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
/tmp/ccpdibJc.o: In function `init_sem':
fum2.c:(.text+0x1e): undefined reference to `sem_init'
fum2.c:(.text+0x3a): undefined reference to `sem_init'
fum2.c:(.text+0x56): undefined reference to `sem_init'
/tmp/ccpdibJc.o: In function `down':
fum2.c:(.text+0x76): undefined reference to `sem_wait'
/tmp/ccpdibJc.o: In function `up':
fum2.c:(.text+0x91): undefined reference to `sem_post'
collect2: ld returned 1 exit status