Ada MARTINEK 6 months ago
parent 0df808e6fa
commit 29e9f594a8

@ -0,0 +1,8 @@
#!/bin/sh
echo "[`date +%M:%S`](client n°$2) Je demande la ressource."
semP $1
echo "[`date +%M:%S`](client n°$2) J'utilise la ressource."
sleep 2
echo "[`date +%M:%S`](client n°$2) Je libère la ressource."
semV $1

@ -0,0 +1,10 @@
#!/bin/sh
mutex=$(semC)
echo "Création du sémaphore d'exclusion mutuelle (id=$mutex)"
for i in 1 2 3; do
./mutex-client.sh $mutex $i &
done
wait
semD $mutex
echo "Suppression du sémaphore d'exclusion mutuelle (id=$mutex)"

@ -0,0 +1,10 @@
#!/bin/bash
temps=$(($RANDOM%3+3))
sleep $temps
echo "[`date +%M:%S`](client n°$3) semV $2"
semV $2
echo "[`date +%M:%S`](client n°$3) semP $1"
semP $1
echo "[`date +%M:%S`](client n°$3) poursuite"

@ -0,0 +1,13 @@
#!/bin/bash
attendreP2=$(semC 0)
attendreP1=$(semC 0)
for i in 1; do
./rdv-client.sh $attendreP1 $attendreP2 1 &
./rdv-client.sh $attendreP2 $attendreP1 2 &
done
wait
semD $attendreP1
echo "Suppression du sémaphore de rdv (id=$attendreP1)"
semD $attendreP2
echo "Suppression du sémaphore de rdv (id=$attendreP2)"

@ -0,0 +1,10 @@
#!/bin/bash
temps=$(($RANDOM%3+3))
sleep $temps
echo "[`date +%M:%S`](client n°$2) semP $1"
semP $1
echo "[`date +%M:%S`](client n°$2) semZ $1"
semZ $1
echo "[`date +%M:%S`](client n°$2) poursuite"

@ -0,0 +1,10 @@
#!/bin/bash
n=10
rdv=$(semC $n)
for i in $n; do
./rdv-client.sh $rdv $i &
done
wait
semD $rdv
echo "Suppression du sémaphore de rdv"

Binary file not shown.

@ -22,6 +22,7 @@ int main(void)
pid_t pid[MAX_PROC]; pid_t pid[MAX_PROC];
int dest; int dest;
char msg[MAX_MSG_LEN]; char msg[MAX_MSG_LEN];
char buf[MAX_MSG_LEN];
int i; int i;
i = 0; i = 0;
@ -41,19 +42,27 @@ int main(void)
} }
if(pid[i] == 0) if(pid[i] == 0)
{ {
dup2(fd[i][1], 1); dup2(1, fd[i][1]);
close(fd[i][1]);
while(fgets(buf, MAX_MSG_LEN, stdin))
{
sscanf(buf, "%d %[^\n]", &dest, msg);
printf("Processus %d a reçu: %s\n", dest, msg);
}
close(fd[i][0]); close(fd[i][0]);
exit(0);
} }
i++; i++;
} }
while(scanf("%d %[^\n]", &dest, msg) != EOF) /*while(scanf("%d %[^\n]", &dest, msg) != EOF)
{ {
if(dest >= 0 && dest < N) if(dest >= 0 && dest < N)
{ {
printf("Processus %d a reçu: %s\n", dest, msg); printf("Processus %d a reçu: %s\n", dest, msg);
write(fd[dest][1], msg, my_strlen(msg) + 1); write(fd[dest][1], msg, my_strlen(msg) + 1);
fsync(fd[dest]);
} }
} }*/
i = 0; i = 0;
while(i < N) while(i < N)
{ {

Loading…
Cancel
Save