Files
程序應該刪除 /tmp 中的臨時文件嗎?
我有一個使用臨時文件的程序,使用該
mkstemps
函式創建。這些文件是在/tmp
目錄中創建的。這些文件會在程序退出時自動刪除嗎?
我想知道我的程序是否應該在退出之前刪除這些文件。如果它們沒有被自動刪除,不刪除它們並讓它們保留在 中是否可以接受
/tmp
?還是在程序退出之前unlink
或之前刪除它們是更好的做法?remove
由函式係列之一創建的文件不會
mkstemp
在程序退出時自動刪除。根據它們的內容,您可以選擇將它們留在 中/tmp
,這通常會定期清理,但這有點糟糕。有兩種主要方法可以乾淨地處理這個問題:
- 如果沒有其他程序需要能夠打開臨時文件,或者您可以通過傳遞文件描述符來處理這個問題,那麼您可以在
mkstemps
返回後立即刪除該文件——該文件仍然存在,但不再出現在目錄列表中,一旦你close
文件描述符,它就會被刪除;- 否則,註冊一個
atexit
用於刪除文件的退出函式。