5.13 标准I/O库_临时文件
来源:互联网 发布:音乐打击垫软件 编辑:程序博客网 时间:2024/06/16 23:08
ISO C标准I/O库提供了两个函数以帮助创建临时文件。
- #include <stdio.h>
- char *tmpnam(char *ptr);
返回值:指向唯一路径名的指针
- FILE *tmpfile(void);
返回值:成功返回文件指针,出错返回NULL
tmpnam函数产生一个与现有文件名不同的一个有效路径名字符串。每次调用它时,它都产生一个不同的路径名,最多调用次数是TMP_MAX。TMP_MAX定义在<stdio.h>中。
若ptr是NULL,则所产生的路径名存放在一个静态区中,指向该静态区的指针作为函数值返回。下一次在调用tmpnam时,会重写该静态区(这意味着,如果调用此函数多次,而且想保存路径名,则应当保存该路径名的副本,而不是指针的副本)。如若ptr不是NULL,则认为它指向长度至少是L_tmpnam个字符的数组(常量L_tmpnam定义在 <stdio.h>中)。所产生的路径名存放在该数组中,ptr也作为函数值返回。
tmpfile创建一个临时二进制文件(类型wb+),在关闭该文件或程序结束时将自动删除这种文件。tmpfile函数经常使用的标准UNIX技术是先调用tmpnam产生一个唯一的路径名,然后,用该路径名创建一个文件,并立即unlink它。
- #include <stdio.h>
- char *tempnam(const char *directory, const char *prefix);
返回值:指向唯一路径名的指针
tempnam是tmpnam的一个变体,它允许调用者为所产生的路径名指定目录和前缀。对于目录有4中不同的选择,按下列顺序判断其条件是否为真,并且使用第一个为真的作为目录:
- 如果定义了环境变量TMPDIR,则用其作为目录。
- 如果参数directory非NULL,则用其作为目录。
- 将 <stdio.h>中的字符串P_tmpdir用作目录。
- 将本地目录(通常是/tmp)用作目录。
如果prefix非NULL,则它应该是最多包含5个字符的字符串,用其作为文件名的头几个字符。该函数调用malloc函数分配动态存储区,用其存放所构造的路径名。当不再使用此路径名时就可释放此存储区。
- #include <stdio.h>
- int mkstemp(char *template);
返回值:成功返回文件描述符,出错返回-1
临时文件的名字使用template字符串参数选择的。如若mkstemp成功返回,它就会修改template字符串以反映临时文件的名字。
与tempfile不同的是,mkstemp创建的临时文件不会自动被删除。如若想从文件系统名字空间中删除该文件,则需要自行unlink它。
使用tmpnam和tempnam的一个不足之处是:在返回唯一路径名和应用程序用该路径名创建文件之间有一个时间窗口。在该时间窗口期间,另一个进程可能创建一个同名文件。tempfile和mkstemp函数则不会产生此种问题。
- 5.13 标准I/O库_临时文件
- 5.7 标准I/O库_每次一行I/O
- 5.9 标准I/O库_二进制I/O
- 5.11 标准I/O库_格式化I/O
- 5.4 标准I/O库_缓冲
- C语言_标准I/O库
- 5.3 标准I/O库_标准输入、标准输出和标准出错
- 5.2 标准I/O库_流和FILE对象
- 5.5 标准I/O库_打开流
- 5.6 标准I/O库_读和写流
- 5.10 标准I/O库_定位流
- 5.12 标准I/O库_实现细节
- 文件操作之2_标准I/O库
- 标准I/O库_兼_stringstream使用
- 标准I/O库
- 标准I/O库
- 标准I/O库
- 标准I/O库
- Windows如何进行Object-C的开发
- java String深入constant pool
- 在gridview中实现鼠标移动,颜色变动。
- 简析C++函数调用方式
- 静态方法和实例化方法的区别
- 5.13 标准I/O库_临时文件
- 打开Visual Studio提示没有安装IE6或更高版本的IE
- Table TableRow TableCell生成几行几列的表格
- 彻底删除SQL Server 2005上的异常维护计划
- SQL 批量更新语句
- 面向对象编程
- js自定义对象
- 新技术的发展是层出不穷呀
- 线程的阻塞 sleep() wait() yield()