2008-10-01 66 views

回答

17

使用標準庫「mktemp」函數之一:mktemp/mkstemp/mkstemps/mkdtemp。

編輯:普通mktemp可能不安全 - mkstemp是首選。

+2

這些返回一個已經打開的FILE句柄,它不與C++的IO流混合。例如,如果你需要使用std :: wofstream來寫入這個新文件呢? – Andrey 2012-01-20 01:38:36

-2

你應該簡單地檢查你正在嘗試寫入的文件是否已經存在。 這是一個鎖定問題。 文件也有所有者,所以如果你正確地做了這件事,錯誤的過程將無法寫入它。

0

人TMPFILE

的TMPFILE()函數打開二進制 讀取/寫入一個唯一的臨時文件(W + B)模式。該文件將被自動當 被關閉或刪除程序terminates.ote

6

使用tmpnam(),或任何給你的名字將是脆弱的競爭條件。使用的東西爲此目的設計的,它返回一個句柄,如TMPFILE():

#include <stdio.h> 

    FILE *tmpfile(void); 
0

mktemp的應該工作或者獲得足夠的可用庫之一生成UUID。

0

C標準庫中的tmpnam()函數旨在解決這個問題。還有tmpfile(),它返回一個打開的文件句柄(並在關閉它時自動刪除它)。

+0

請勿使用tmpnam()。從手冊頁: 「不要使用此函數,而應使用mkstemp(3)或tmpfile(3)」。 – twk 2008-10-01 22:18:53

相關問題