国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

unix編程創建前綴固定的臨時文件代碼分享

2020-07-27 19:20:31
字體:
來源:轉載
供稿:網友

參數:
pathname,存儲臨時文件的路徑文件名,需要手動free()掉。
dir,臨時文件的路徑,如果TMPDIR環境變量不為空,則此參數被忽略,轉而使用環境變量。
pfx,臨時文件名的前綴,只使用前5個字符。
注:
創建的臨時文件需要手動unlink()掉。

創建臨時文件的函數

復制代碼 代碼如下:

int  Make_temp_file(char **pathname,const char *dir,const char *pfx){
 char *ptr,*tmp;
 size_t len;
 int fd;
 debug_assert("Invalid pointer","Make_temp_file()",pathname);
 /*前綴只能是多于5字符*/
 if(pfx && (len=strlen(pfx))>0){
  tmp=(char*)Malloc((len>5?5:len)+1);
  strncpy(tmp,pfx,len>5?5:len);
 }
 else
  tmp=NULL;
 ptr=tempnam(dir,tmp);
 if(tmp)free(tmp);
 len=strlen(ptr);
 tmp=(char*)Malloc(len+6+1);
 if(snprintf(tmp,len+6+1,"%sXXXXXX",ptr)==-1)
  err_sys(errno,"snprintf() error");
 free(ptr);
 fd=Mkstemp(tmp);
 *pathname=tmp;
 return fd;
}

測試程序

復制代碼 代碼如下:

#include "wrap_ext.h"

int main(int argc,char **argv){
 int fd;
 char *path;
 if(argc!=3)
  err_quit(-1,"usage %s <dir> <prefix>",argv[0]);
 fd=Make_temp_file(&path,argv[1][0]==' '?NULL:argv[1],argv[2][0]==' '?NULL:argv[2]);
 err_msg("temporary file path:%s",path);
 Close(fd);
 Unlink(path);
 free(path);
 return EXIT_SUCCESS;
}

測試結果

復制代碼 代碼如下:

root@U-SERVER:/home/apu/sysinfo# ./tmpfile " " " "
temporary file path:/tmp/fileq55hoF8swFfa
root@U-SERVER:/home/apu/sysinfo# ll /tmp/fileq55hoF8swFfa
ls: cannot access /tmp/fileq55hoF8swFfa: No such file or directory
root@U-SERVER:/home/apu/sysinfo# ./tmpfile " " tmp_
temporary file path:/tmp/tmp_0rzhqozlthxW
root@U-SERVER:/home/apu/sysinfo# ./tmpfile /home tmp_
temporary file path:/home/tmp_phzxvRrp33OL

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 府谷县| 射阳县| 长海县| 仪陇县| 汨罗市| 临颍县| 勃利县| 玉溪市| 横山县| 长寿区| 华宁县| 靖安县| 邹城市| 辛集市| 大埔区| 台北市| 沙湾县| 罗定市| 资溪县| 青铜峡市| 邛崃市| 盱眙县| 城口县| 奉节县| 清涧县| 民乐县| 延吉市| 桓台县| 台山市| 西盟| 郯城县| 岳池县| 梁河县| 大埔区| 西畴县| 渑池县| 康定县| 韩城市| 临泉县| 炉霍县| 定西市|