我假設一旦進程創建了一個信號量,任何進程/用戶都可以訪問它。在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