From: Jérôme Benoit Date: Fri, 2 Mar 2018 17:05:08 +0000 (+0100) Subject: Make some array initializations variable. X-Git-Url: https://git.piment-noir.org/?p=TD_SE.git;a=commitdiff_plain;h=5bb90b8301bcac76c05099aeaf291ebda07adf00 Make some array initializations variable. Signed-off-by: Jérôme Benoit --- diff --git a/philosophe-famine/philosophe.c b/philosophe-famine/philosophe.c index bd7ea4e..eb27f43 100644 --- a/philosophe-famine/philosophe.c +++ b/philosophe-famine/philosophe.c @@ -4,7 +4,7 @@ #include #include -#define N 5 +#define N 10 // nombre de philosophes #define G (i + 1) % N // fourchette gauche du philosophe i @@ -14,7 +14,7 @@ #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]; @@ -61,12 +61,15 @@ static void *philosophe(void *num) 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]); diff --git a/philosophe/philosophe.c b/philosophe/philosophe.c index 22923ce..f7b5107 100644 --- a/philosophe/philosophe.c +++ b/philosophe/philosophe.c @@ -12,7 +12,7 @@ // fourchette droite du philosophe i #define libre 1 #define occupe 0 -static int fourch[N] = { libre }; +static int fourch[N]; sem_t mutex; @@ -42,7 +42,11 @@ static void *philosophe(void *num) 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 diff --git a/upipe/upipe.c b/upipe/upipe.c index 1264fb2..845fea2 100644 --- a/upipe/upipe.c +++ b/upipe/upipe.c @@ -11,7 +11,7 @@ int main() 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 { @@ -25,7 +25,7 @@ int main() 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]); }