我假设一旦进程创建了一个信号量,任何进程/用户都可以访问它。在Semaphore上设置访问权限?
是否有可能对特定信号量设置访问限制,以便仅可由某些进程/用户访问,或者只有某些进程才能释放信号量。
如果我们使所有进程都可以访问信号量,我会看到一些问题。例如:虚拟进程可以读取信号量并释放锁,以便向真正等待信号锁的实际进程发出虚假信号。
所有这些问题产生的,因为我变得很怪异输出与下面的代码片段:
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";
通过运行上面的程序,我得到下面的输出
Can't create semaphore Can't open semaphore
输出表明它未能创建信号量,甚至未能打开信号量。如果信号量已经以给定名称存在,则创建信号量可能失败。 我不明白为什么打开信号失败。
有些人可以澄清创建信号量&开放信号失败的场景。
是否要设置访问限制,还是你认为访问限制是问题? – 2009-09-22 17:05:01
这里访问限制是问题。由于信号量是由另一个进程较早创建的,我想使用Win32 :: Semaphore发布信号量 – 2009-09-22 19:31:59