源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

unix编程创建前缀固定的临时文件代码分享

  • 时间:2022-10-21 23:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:unix编程创建前缀固定的临时文件代码分享
参数: pathname,存储临时文件的路径文件名,需要手动free()掉。 dir,临时文件的路径,如果TMPDIR环境变量不为空,则此参数被忽略,转而使用环境变量。 pfx,临时文件名的前缀,只使用前5个字符。 注: 创建的临时文件需要手动unlink()掉。 创建临时文件的函数
[u]复制代码[/u] 代码如下:
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; }
测试程序
[u]复制代码[/u] 代码如下:
#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; }
测试结果
[u]复制代码[/u] 代码如下:
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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部