手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >unix编程创建前缀固定的临时文件代码分享
unix编程创建前缀固定的临时文件代码分享
摘要:参数:pathname,存储临时文件的路径文件名,需要手动free()掉。dir,临时文件的路径,如果TMPDIR环境变量不为空,则此参数被...

参数:

pathname,存储临时文件的路径文件名,需要手动free()掉。

dir,临时文件的路径,如果TMPDIR环境变量不为空,则此参数被忽略,转而使用环境变量。

pfx,临时文件名的前缀,只使用前5个字符。

注:

创建的临时文件需要手动unlink()掉。

创建临时文件的函数

复制代码 代码如下:

intMake_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编程创建前缀固定的临时文件代码分享】相关文章:

shell查找当前目录下大于1M的文件的三种方法分享

linux删除无效链接文件脚本分享

Shell中使用scp命令实现文件上传代码

总结的7个shell字符串操作方法和实例分享

Linux Shell脚本编程的注意事项

Shell脚本实现的阳历转农历代码分享

Shell脚本实现批量下载网络图片代码分享

shell脚本正则匹配文件中的Email并写入到文件中代码分享

Shell脚本读取ini配置文件的实现代码2例

Shell编程 Bash引号的那点事

精品推荐
分类导航