linux臨時檔案

來源:互聯網
上載者:User

很多情況下,程式會利用一些檔案形式的臨時儲存手段。

用tmpname函數可以產生一個唯一的檔案名稱。

#include<stdio.h>

char *tmpname( char  *s)

tmpname函數返回一個不與任何已存在的檔案名稱同名的有效檔案名稱,如果字串s不為空白,檔案名稱也會寫入它。對tmpname的後續調用

會覆蓋存放傳回值的靜態儲存區。

如果需要立刻使用臨時檔案,你可以用tmpfile函數在給它命名的同時開啟它,這點非常的重要。因為另一個程式可能會建立去一個與tmpname返回的

檔案名稱同名的檔案,tmpfile()則完全避免了這種情況。

#include<stdio.h>

FILE *tmpfile(void);

tmpfile()返回一個檔案流指標,它指向一個唯一的臨時檔案。該檔案以讀寫的方式開啟,當對一個檔案的所有的引用都被刪除的時候,這個臨時檔案將會

被刪除。

如果出錯,tmpfile函數返回null 指標,並設定errno的值。

#include <stdio.h>#include <stdlib.h>int main(){    char tmpname[L_tmpnam];    char *filename;     FILE *tmpfp;    filename = tmpnam(tmpname);    printf("Temporary file name is: %s\n", filename);    tmpfp = tmpfile();    if(tmpfp)        printf("Opened a temporary file OK\n");    else        perror("tmpfile");    exit(0);}

UNIX有另外一種產生臨時檔案名稱的方式,就是使用mktemp和mktemp函數。

#include<stdlib.h>

char *mktemp(char *template);

int mkstemp(char *template);

mktemp函數以給定的模板為基礎建立一個唯一的檔案名稱,template參數必須是一個以6個X字元結尾的字串。

mkstemp函數類似於tempfile(),它也是同時建立並開啟一個臨時檔案。檔案名稱的產生方法和mktemp一樣,但是它的傳回值是一個

開啟的,底層的檔案描述符。

在應該在程式中使用"建立並開啟"函數tmpfile和mkstemp函數,而不要用tmpname和mktemp函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.