Files

程序應該刪除 /tmp 中的臨時文件嗎?

  • November 1, 2019

我有一個使用臨時文件的程序,使用該mkstemps函式創建。這些文件是在/tmp目錄中創建的。

這些文件會在程序退出時自動刪除嗎?

我想知道我的程序是否應該在退出之前刪除這些文件。如果它們沒有被自動刪除,不刪除它們並讓它們保留在 中是否可以接受/tmp?還是在程序退出之前unlink或之前刪除它們是更好的做法?remove

由函式係列之一創建的文件不會mkstemp在程序退出時自動刪除。根據它們的內容,您可以選擇將它們留在 中/tmp,這通常會定期清理,但這有點糟糕。

有兩種主要方法可以乾淨地處理這個問題:

  • 如果沒有其他程序需要能夠打開臨時文件,或者您可以通過傳遞文件描述符來處理這個問題,那麼您可以在mkstemps返回後立即刪除該文件——該文件仍然存在,但不再出現在目錄列表中,一旦你close文件描述符,它就會被刪除;
  • 否則,註冊一個atexit用於刪除文件的退出函式。

引用自:https://unix.stackexchange.com/questions/549780