Hello, je n'ai fait que survoler ton programme mais à aucun moment tu ne testes la valeur de retour de msgsnd, ni celle des autres d'ailleurs.
J'ai donc remplacé tous les msgsnd de ton programme par des my_msgsnd et écrit la fonction correspondante avec les mêmes arguments, pour appeler msgsnd normalement mais faire en plus quelques contrôles.
À aucun moment tes msgsnd ne fonctionnent correctement. À chaque fois, perror("") me renvoie « Invalid argument ». Même chose pour l'initialisation de tes sémaphores. Il a fallu ajouter « 2>&1 | less » pour avoir le début de ta sortie mais celle-ci nous donne :
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
: Invalid argument
pb avec semop
…
… sur une trentaine de lignes avant de passer à la suite. Si ni tes sémaphores ni tes file de messages sont correctement initialisés, il y a peu de chances pour que ton programme aboutisse…
Partager