我應該在哪裡創建一個文件以便任何程序都可以訪問它?
我正在製作一個可以由多個使用者多次創建的程序,我在想如果有一個文件來跟踪程序資訊 ID、PID、埠等會很好……這樣所有的程序知道該程序的其他實例正在執行。
我希望我的程序可以在多個 unix 發行版(以及 macOS)上工作,我想知道創建文件的最佳位置是什麼,例如
/var/{name}
or/Library/{name}
,我可能必鬚根據作業系統使用不同的路徑,但我的選項不同有更好的。另外,我的另一個選擇是製作一個在 root 中執行並跟踪它的伺服器,但我認為僅跟踪正在執行的實例和文件是一個更好的選擇,但你覺得呢?
我建議您閱讀man 7 hier,
/var/run
這似乎就是您要找的東西。因為通過閱讀手冊頁來收集這些資訊並不容易,如果您以前沒有使用過這些資訊:您可以通過 procfs 文件系統訪問程序數據,並且/proc/$pid/env
可以訪問為您的程序設置的環境變數。利用這一點,您可以區分不同的實例。但是請注意,您需要正確的訪問權限才能寫入
/var/run
,並且通常通過正確安裝程序進行存檔,最好由您的包管理器進行存檔。如果您需要一個更簡單的解決方案,它也適用於使用者帳戶(!=root),我知道還有另一種做法:例如,X-server 將共享文件寫入其中/tmp
。這也可能是您的替代方案。/tmp
或者/dev/shm
通常是更遠的地方,可以使用易失性儲存器。對於這種“狀態”文件來說,這是一個很好的做法,因為它可以減少阻塞,例如,硬碟可能會從睡眠中啟動,或者儲存卡在中斷之前只有這麼多的寫入周期。便攜性如何?我認為
/dev/shm
這不是 FreeBSD 系統上的最佳選擇,其他應該可以工作,我完全不知道它在 MacOS 下的情況。不過我有信心,Apple 也提供了 hier(7) 手冊。