使用“/run/shm”(以前的“/dev/shm”)作為暫存目錄

使用“/run/shm”(以前的“/dev/shm”)作為暫存目錄

/run/shm在(以前的)中建立目錄/dev/shm並將其用作應用程式的臨時目錄是一種好的做法嗎?

背景:我正在為一個程式編寫黑盒測試,該程式對文件和目錄執行很多操作。對於每個測試,我都會創建很多文件和目錄,然後運行程序,然後創建預期的文件和目錄集,然後運行 diff 進行比較。我現在有大約 40 個測試,它們的運行時間已經超過 2 秒。希望加快速度,我想在某種 ramdisk 上的目錄中運行測試。

研究我偶然發現的記憶體盤一個問題答案表明可以建立目錄/dev/shm並像臨時目錄一樣使用它。研究更多但我偶然發現維基頁面debian 說直接使用是錯誤的/dev/shm。我應該使用這些shm_*功能。不幸的是,這些shm_*函數似乎無法在 shell 腳本中使用。

現在我很困惑。是否可以像臨時目錄一樣使用/run/shm(以前)?/dev/shm

答案1

/run只要您擁有適當的權限,使用某個目錄是完全可以的。在一些現代發行版中,/tmp它已經是記憶體中的虛擬檔案系統或指向內部目錄的符號連結/run。如果這是您的情況(您可以在 中檢查/etc/fstab,或輸入mtab),您可以將/tmp其用作臨時目錄。

另外,不要與 Debian 的文章混淆。shm_*函數用於建立進程間通訊的共享記憶體段。透過這些函數,您可以在兩個或多個進程之間共享記憶體片段,以便它們使用相同的資料進行通訊或協作。進程將記憶體段附加在自己的位址空間中,並且可以像往常一樣在那裡讀寫。內核處理複雜性。這些函數不能作為 shell 函數使用(並且在 shell 上下文中也不是很有用)。欲了解更多信息,請查看man 7 shm_overview。本文的重點是,任何程式都不應直接管理代表共享記憶體段的偽文件,而應使用適當的函數來建立、附加和刪除共享記憶體段。

相關內容