Quelques changements utiles, ça compile
parent
0f0a0c5c6c
commit
f39c6934dd
|
@ -8,5 +8,6 @@ int main( int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,6 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/ipc.h>
|
#include <sys/ipc.h>
|
||||||
#include <sys/sem.h>
|
#include <sys/sem.h>
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* creation du semaphore cle ayant comme valeur initiale val
|
|
||||||
retourne un identificateur de semaphore >=0 ou -1 si erreur
|
|
||||||
*/
|
|
||||||
|
|
||||||
int creat_sem(key_t cle,int val)
|
int creat_sem(key_t cle,int val)
|
||||||
{
|
{
|
||||||
int semid;
|
int semid;
|
||||||
|
@ -33,24 +26,10 @@ int creat_sem(key_t cle,int val)
|
||||||
}
|
}
|
||||||
return(semid);
|
return(semid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* destruction du semaphore cle
|
|
||||||
retourne:
|
|
||||||
0 si la destruction du semaphore s est effectuee correctement
|
|
||||||
-1 si erreur
|
|
||||||
*/
|
|
||||||
|
|
||||||
int del_sem(key_t cle)
|
int del_sem(key_t cle)
|
||||||
{
|
{
|
||||||
return(semctl((semget(cle,0,0)),0,IPC_RMID,0));
|
return(semctl((semget(cle,0,0)),0,IPC_RMID,0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* recherche le semaphore cle
|
|
||||||
retourne l'identificateur du semaphore >=0 ou -1 si erreur
|
|
||||||
*/
|
|
||||||
|
|
||||||
int open_sem(key_t cle)
|
int open_sem(key_t cle)
|
||||||
{
|
{
|
||||||
return(semget(cle,0,0));
|
return(semget(cle,0,0));
|
||||||
|
|
|
@ -10,9 +10,30 @@
|
||||||
#include <sys/sem.h>
|
#include <sys/sem.h>
|
||||||
|
|
||||||
void erreur(char *s);
|
void erreur(char *s);
|
||||||
int creat_sem(key_t cle, ushort val);
|
|
||||||
int del_sem(key_t cle);
|
|
||||||
int open_sem(key_t cle);
|
int open_sem(key_t cle);
|
||||||
void P(int semid);
|
void P(int semid);
|
||||||
void V(int semid);
|
void V(int semid);
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
int creat_sem(key_t cle, ushort val);
|
||||||
|
/* creation du semaphore cle ayant comme valeur initiale val
|
||||||
|
retourne un identificateur de semaphore >=0 ou -1 si erreur
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int del_sem(key_t cle);
|
||||||
|
/* destruction du semaphore cle
|
||||||
|
retourne:
|
||||||
|
0 si la destruction du semaphore s est effectuee correctement
|
||||||
|
-1 si erreur
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* recherche le semaphore cle
|
||||||
|
retourne l'identificateur du semaphore >=0 ou -1 si erreur
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
#include "constantes.h"
|
#include "constantes.h"
|
||||||
|
|
||||||
typedef MEMP // Structure de sémaphore
|
typedef struct msg_s
|
||||||
|
{
|
||||||
|
char c; // caractère émi
|
||||||
|
int idp; // indice du producteur
|
||||||
|
} MSG;
|
||||||
|
typedef struct memp_s // Structure de sémaphore
|
||||||
{
|
{
|
||||||
int max_prod;
|
int max_prod;
|
||||||
int tete;
|
int tete;
|
||||||
int queue;
|
int queue;
|
||||||
int tpa[MAX_PROD]; // -1 de tpa[i] alors libre, 0 sinon
|
int tpa[MAX_PROD]; // -1 de tpa[i] alors libre, 0 sinon
|
||||||
MSG f[MAX_BUF]; // Buffer stockant les caractères émis par les différents producteurs
|
MSG f[MAX_BUF]; // Buffer stockant les caractères émis par les différents producteurs
|
||||||
}
|
} MEMP;
|
||||||
|
|
||||||
// Arrêt sur ^D du consommateur, arrêt de tous les IPC et on s'arrête
|
// Arrêt sur ^D du consommateur, arrêt de tous les IPC et on s'arrête
|
||||||
// du producteur, arrêt des IPC, met à jour le tableau à -1 sur sa case et il s'arrête
|
// du producteur, arrêt des IPC, met à jour le tableau à -1 sur sa case et il s'arrête
|
||||||
|
|
||||||
typedef struct MSG
|
|
||||||
{
|
|
||||||
char c; // caractère émi
|
|
||||||
int idp; // indice du producteur
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue