已移到:http://www.wypblog.com/archives/172
臨時檔案是一個暫時用來儲存資料的檔案。如果使用建立普通檔案的方法來建立檔案,則可能遇到檔案是否存在,是否有檔案讀寫權限的問題。Linux系統下提供的建立唯一的臨時檔案的方法如下:
#include<stdio.h>char *tmpnam(char *s);FILE *tmpfile();
函數tmpnam()產生一個唯一i的檔案名稱。如果參量為NULL,則在一個內部使用的緩衝區內產生檔案名稱,當下一次調用該函數的時候,則可能覆蓋該檔案名稱。如果參數不是為NULL,則名字拷貝到字串中,字串的長度至少為L_tmpnam,它定義在stdio.h中。如果不成功則函數返回NULL。函數tmpfile()則返回一個臨時檔案的描述符,檔案的開啟屬性是讀和寫。相當於使用fopen以w+開啟。如果不成功則返回NULL。
下面是一個簡短的列子。
#include<stdio.h>int main(){char tmpname[L_tmpnam];char *filename;FILE *fp;filename = tmpname(tmpname);printf("Temporary file name is %s\n", filename);fp = tmpfile();if(fp){printf("Temporary file opened!\n");}else{perror("tmpfile");}return 0; }
此外,還有兩個函數也可以建立臨時檔案:
#include<stdio.h>char *mktemp(char *template);int mkstemp(char *template);
函數mktemp()從給定的模組template中建立唯一的臨時檔案名稱。模版可以是檔案路徑的首碼,模版的最後6個字元必須是“XXXXXX”,比如:
char template[L_tmpnam];char *filename;strcpy(template, "/temp/wypXXXXXX");filename = mktemp(template);printf("Temporary file name is %s\n", filename);
函數mkstemp()類似於tmpfile(),但是開啟的檔案相當於使用提供底層的檔案操作函數open()開啟檔案。
轉載請註明: 轉載自過往記憶(http://www.wypblog.com/)
本文連結地址: Linux下建立臨時檔案(http://www.wypblog.com/archives/172)