温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

unix编程创建前缀固定的临时文件的方法

发布时间:2021-07-26 14:23:03 来源:亿速云 阅读:94 作者:chen 栏目:开发技术

这篇文章主要介绍“unix编程创建前缀固定的临时文件的方法”,在日常操作中,相信很多人在unix编程创建前缀固定的临时文件的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”unix编程创建前缀固定的临时文件的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

参数:
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

到此,关于“unix编程创建前缀固定的临时文件的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI