#include <pthread.h>
#include <semaphore.h>
-#define N 5
+#define N 10
// nombre de philosophes
#define G (i + 1) % N
// fourchette gauche du philosophe i
#define penser 0
#define faim 1
#define manger 2
-static int phiState[N] = { penser };
+static int phiState[N];
sem_t mutex;
sem_t semPhil[N];
int main()
{
- int i, NumPhi[N] = { 0, 1, 2, 3, 4 };
+ int i, NumPhi[N];
+ for (i = 0; i < N; i++)
+ NumPhi[i] = i;
+ for (i = 0; i < N; i++)
+ phiState[i] = penser;
pthread_t th[N];
sem_init(&mutex, 0, 1);
- for (i = 0; i < N; i++) {
+ for (i = 0; i < N; i++)
sem_init(&semPhil[i], 0, 1);
- }
// création des N philosophes
for (i = 0; i < N; i++)
pthread_create(&th[i], NULL, philosophe, &NumPhi[i]);
// fourchette droite du philosophe i
#define libre 1
#define occupe 0
-static int fourch[N] = { libre };
+static int fourch[N];
sem_t mutex;
int main()
{
- int i, NumPhi[N] = { 0, 1, 2, 3, 4 };
+ int i, NumPhi[N];
+ for (i = 0; i < N; i++)
+ NumPhi[i] = i;
+ for (i = 0; i < N; i++)
+ fourch[i] = libre;
pthread_t th[N];
sem_init(&mutex, 0, 1);
// création des N philosophes
int fd[2];
pipe(fd); // création d'un tube anonyme
char message[100]; // pour récupérer un message
- int nboctets;
+ ssize_t nboctets;
char *phrase = "message envoyé au père par le fils";
if (fork() == 0) //création d'un processus fils
{
close(fd[W]);
// extraction du message du tube
nboctets = read(fd[R], message, 100);
- printf("Lecture %d octets : %s\n", nboctets, message);
+ printf("Lecture %zd octets : %s\n", nboctets, message);
// fermeture du descripteur de lecture
close(fd[R]);
}