使用臨時檔案之tmpnam

2021-10-11 18:53:30 字數 1171 閱讀 4054

軟體開發過程中,生成臨時檔案是很常見的用法。臨時檔案特性是短暫存在,但又受程式控制,要確保每個檔案都被指定獨一無二的檔名。

cstdio庫函式中宣告的tmpnam()標準函式可實現該功能。

char

*tmpnam

(char

*pszname)

;

l_tmpnam是在stdio.h中定義的巨集,指明了tmpnam()函式產生的檔名的最大長度。

tmpname()函式建立了乙個臨時檔名,並將它放到pszname指向的c風格字串中,常量l_tmpnam限制了檔名包含的字元數,常量tmp_max限制了確保當前目錄中不生成重複資料夾的情況下,tmpnam()可被呼叫的最多次數,兩者均可自定義。

【引數pszname】tmpnam()函式產生的檔名儲存在乙個陣列中,並將陣列的位址返回。如果pszname為null,那麼檔名將被儲存在乙個系統自動建立的靜態陣列中。該陣列會一直存在,直到再次呼叫tmpnam()函式或程式停止。如果pszname不是null,那麼它必須指向乙個長度不小於 l_tmpnam 的字元陣列,該陣列將用於儲存產生的檔名。

【返回值】成功時返回乙個指向儲存著檔名的字元陣列的指標(如果pszname不是null,那麼返回值與pszname一樣),失敗時返回null。

注意:tmpnam()僅僅是產生乙個檔名,必須使用fopen()等函式建立臨時檔案。因此在檔案關閉或程式停止時,該檔案不會自動刪除,必須手動處理。而tmpfile()函式建立並開啟乙個臨時檔案,該檔案由系統自行管理,會在檔案關閉或程式停止時自動刪除。

#include

#include

using

namespace std;

intmain()

; cout <<

"here are ten names:\n"

;for

(int i=0;

10>i;i++

)//迴圈輸出生成的臨時檔案名稱

return0;

}

tmpname()函式可以生成tmp_max個不同的檔名,每個檔名都不超過l_tmpnam個,但生成的檔名不可控,每次都會不一樣。

1 7 tmpnam和tmpfile臨時檔案

臨時檔案關鍵點如下 1.如何保證不衝突。2.及時銷毀 造成記憶體吃緊,也會導致問題1增大衝突的可能性。功能 create a name for a temporary file建立乙個臨時檔案 char tmpnam char s 返回值 返回乙個指向臨時檔案的指標 缺陷 不是原子操作 產生名字,再...

如何使用臨時檔案

python為我們提供了乙個標準庫來處理臨時檔案,所誤謂臨時檔案就是寫在硬碟上,關機就刪除,臨時檔案分為有名字的和無名字的,分別對應為 temporaryfile namedtempporaryfile,這裡不討論python2.x寫法,form tempfile import temporaryf...

bash 臨時檔案

1.臨時檔案目錄 tmp 使用者可以隨時隨地利用mktemp命令建立臨時檔案與 tmp目錄,這個目錄在每次系統啟動時都會被清空,因此裡面的檔案都是臨時使用的 不能永久儲存 用完就不管的。任何賬戶都有權在 tmp目錄下建立臨時檔案,完整的讀寫許可權全都給建立它的屬主,並且其它賬戶無權訪問它。2.使用m...