我假设一旦进程创建了信号量,任何进程/用户都可以访问它。
是否可以对特定信号量设置访问限制,以便只有某些进程/用户可以访问它,或者只有某些进程可以释放信号量。
如果我们让所有进程都可以访问信号量,我会发现一些问题。例如:一个虚拟进程可以读取信号量并释放锁,从而向真正等待信号量锁的实际进程发出错误信号。
所有这些问题都出现了,因为我使用以下代码片段得到了非常奇怪的输出:
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";
通过运行上述程序,我得到以下输出
无法创建信号量 无法打开信号量
输出显示它无法创建信号量,甚至无法打开信号量。如果已存在具有给定名称的信号量,则创建信号量可能会失败。我不明白为什么打开信号量失败。
有些人可以澄清创建信号量和打开信号量都失败的情况。