使用 /run/shm
(以前的 /dev/shm
)作為臨時目錄
/run/shm
在(以前/dev/shm
)中創建一個目錄並將其用作應用程序的臨時目錄是一種好習慣嗎?背景:我正在為一個對文件和目錄做很多事情的程序編寫黑盒測試。對於每個測試,我都會創建很多文件和目錄,然後執行程序,然後創建預期的文件和目錄集,然後執行 diff 進行比較。我現在有大約 40 個測試,它們已經執行了 2 秒多。希望加快速度,我想在某種 ramdisk 上的目錄中執行測試。
在研究 ram 磁碟時,我偶然發現了一個問題,答案是可以在其中創建一個目錄
/dev/shm
並像使用臨時目錄一樣使用它。研究了一些,但是我偶然發現了一個來自 debian 的 wiki 頁面,指出/dev/shm
直接使用它是一個錯誤。我應該使用這些shm_*
功能。不幸的是,這些shm_*
函式似乎無法在 shell 腳本中使用。現在我很困惑。像臨時目錄一樣使用
/run/shm
(以前)是否可以?/dev/shm
/run
只要您擁有適當的權限,就可以使用某個目錄。在一些現代發行版中,/tmp
已經是記憶體中的虛擬文件系統或指向內部目錄的符號連結/run
。如果這是您的情況(您可以在 中檢查/etc/fstab
或鍵入mtab
),您可以將/tmp
其用作臨時目錄。另外,不要對來自 Debian 的文章感到困惑。
shm_*
函式用於為程序間通信創建共享記憶體段。使用這些功能,您可以在兩個或多個程序之間共享一段記憶體,讓它們使用相同的數據進行通信或協作。程序將記憶體段附加在自己的地址空間中,並且可以像往常一樣在那裡讀寫。核心處理複雜性。這些函式不能作為 shell 函式使用(並且在 shell 上下文中不會很有用)。如需更多資訊,請查看man 7 shm_overview
. 這篇文章的重點是任何程序都不應該直接管理代表共享段的偽文件,而是使用適當的函式來創建、附加和刪除共享記憶體段。