Je suppose qu'une fois qu'un sémaphore est créé par un processus, il sera accessible à tout processus/utilisateur.Définition des autorisations d'accès sur le sémaphore?
Est-il possible de mettre des restrictions d'accès sur un sémaphore particulier afin qu'il ne soit accessible que par certains processus/utilisateurs ou que certains processus seulement puissent libérer le sémaphore.
Je vois des problèmes si on rend un sémaphore accessible par tous les processus. Exemple: un processus fictif peut lire le sémaphore et relâcher le verrou à souhait en faisant un faux signal au processus réel qui attend réellement le verrou du sémaphore.
Toutes ces questions se posent que je reçois de sortie très bizarre avec l'extrait de code suivant:
use Win32::Semaphore;
$sem = Win32::Semaphore->new(0, 1,"reliance2692")
or print "Can't create semaphore\n";
$sem = Win32::Semaphore->open("reliance2692")
or print "Can't open semaphore\n";
print "Semaphore:" . $sem . "\n";
En exécutant le programme ci-dessus, je reçois la sortie suivante
Can't create semaphore Can't open semaphore
La sortie montre qu'il a échoué à créer un sémaphore et a même échoué à ouvrir le sémaphore. la création d'un sémaphore peut avoir échoué si un sémaphore existe déjà avec le nom donné. Je ne comprends pas pourquoi l'ouverture d'un sémaphore a échoué. Peut-on clarifier le scénario où échoue le sémaphore à la création du sémaphore &?
Voulez-vous définir ou pensez-vous que les restrictions d'accès sont le problème? –
Ici, les restrictions d'accès sont le problème. Comme le sémaphore a été créé plus tôt par un autre processus et je veux libérer le sémaphore en utilisant Win32 :: Semaphore –