UNIX环境编程学习笔记(14)——文件I/O之临时文件
lienhua34
2014-10-01
ISO C 标准 I/O 库提供了个两个函数 tmpnam 和 tmpfile 以帮助创建临时文件,
#include <stdio.h>
char *tmpnam(char *ptr);
返回值:指向唯一路径名的指针
tmpnam 函数产生一个与现有文件名不同的一个有效路径名字符串。每次调用它时,它都产生一个不同的路径名,最多调用次数是TMP_MAX。TMP_MAX 定义在 <stdio.h> 中。
若 ptr 是 NULL,则产生的路径名存放在一个静态区中,指向该静态区的指针作为函数值返回。下次调用 tmpnam 函数会重写该静态区。若 ptr 不是 NULL,则认为它指向长度至少为L_tmpnam 个字符的数组(常量L_tmpnam 定义在头文件 <stdio.h> 中)。所产生的路径名存放在该数组中,然后将 ptr 作为函数值返回。
例子:
#include <stdio.h>
#include <stdlib.h>
int
main(void)
{
char *ptr1, *ptr2;
ptr1 = tmpnam(NULL);
printf("after first tmpnam: \n");
printf("ptr1: %s\n", ptr1);
ptr2 = tmpnam(NULL);
printf("after second tmpnam: \n");
printf("ptr1: %s\n", ptr1);
printf("ptr2: %s\n", ptr2);
exit();
}
编译该程序,生成文件 tmpnamdemo,然后运行文件 tmpnamdemo,
lienhua34:demo$ gcc -o tmpnamdemo tmpnamdemo.c
lienhua34:demo$ ./tmpnamdemo
after first tmpnam:
ptr1: /tmp/fileEJFVDS
after second tmpnam:
ptr1: /tmp/file4n2lGz
ptr2: /tmp/file4n2lGz
通过上面的运行结果可以看出,第二次使用调用 tmpnam(NULL) 之后,指针 ptr1 和 ptr2 指向的内容是一样的。这是因为它们指向的是同一个静态区,多次调用 tmpnam(NULL) 会重写该静态区的内容。
tmpfile 函数创建一个临时二进制我而建(类型为 wb+),在关闭该文件或程序结束时将自动删除该文件。
#include <stdio.h>
FILE *tmpfile(void);
返回值:若成功则返回文件指针,若出错则返回NULL
(done)
UNIX环境编程学习笔记(14)——文件I/O之临时文件的更多相关文章
- UNIX环境编程学习笔记(13)——文件I/O之标准I/O流
lienhua342014-09-29 1 标准 I/O 流 之前学习的都是不带缓冲的 I/O 操作函数,直接针对文件描述符的,每调用一次函数可能都会触发一次系统调用,单次调用可能比较快捷.但是,对于 ...
- UNIX环境编程学习笔记(10)——文件I/O之硬链接和符号链接
lienhua342014-09-15 1 文件系统数据结构 UNIX 文件系统通过 i 节点来存储文件的信息.如图 1 所示为一个磁盘柱面上的 i 节点和数据块示意图.其中 i 节点是一个固定长度的 ...
- UNIX环境编程学习笔记(12)——文件I/O之目录操作
lienhua342014-09-18 1 引言 在 UNIX 系统中,目录是一种特殊的文件类型.我们可以使用 open 函数来打开目录,获取文件描述符,然后调用 stat 函数来获取目录的属性信息, ...
- UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改
lienhua342014-09-10 1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面, 表 1: 文件的 9 个访问权限位 st_mod ...
- UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
lienhua342014-09-02 1 文件的设置用户 ID位 和设置组 ID位 与进程相关联的 ID 如下表所示, 表 1: 与进程相关联的用户 ID 和组 ID 实际用户 ID 我们实际上是谁 ...
- UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...
- UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
lienhua342014-08-23 UNIX 提供了两个函数 dup 和 dup2 用于复制一个现存的文件描述符. #include <unistd.h> int dup(int fi ...
- UNIX环境编程学习笔记(3)——文件I/O之内核 I/O 数据结构
lienhua342014-08-27 内核使用三种数据结构表示打开的文件,分别是文件描述符表.文件表和 V 节点表. (1) 每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,每 ...
- UNIX环境编程学习笔记(2)——文件I/O之不带缓冲的 I/O
lienhua342014-08-25 1 文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用.文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符. ...
随机推荐
- C#学习笔记(3)——操作sqlserver数据库增删改查
说明(2017-5-25 16:29:35): 1. VS2010,视图->服务器资源管理器->数据连接->右键添加连接->服务器名(本机可以用点)->选择数据库-> ...
- 【转载】TCP协议要点和难点全解
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的 ...
- <[长期赢利:股票价值投资方法]>读书笔记
书在这里 风险是因为不够专业 在股市里,要不断拓宽自己的眼界 投资如长跑,贵在坚持 长线为主,短线为辅:重视选股,减少盲目:耐心等待,春天回来 除了要与银行利息比以外,还要了解当时股票的平均市盈率,再 ...
- sublime sftp注册码
注册码: { "email": "xiaosong@xiaosong.me", "product_key": "d419f6-de ...
- SQL SERVER 事务和锁
内容皆整理自网络 一.事务 作者:郭无心链接:https://www.zhihu.com/question/31346392/answer/59815366来源:知乎著作权归作者所有.商业转载请联系作 ...
- Shuffle机制
一个map task处理一个切片Split,切片是一个范围的数据,和blocksize大小没有必然关系. 1.每个map有一个环形内存缓冲区,用于存储任务的输出.默认大小100MB(io.sort.m ...
- http免费升级https 攻略(超简单)
1.注册沃通SSL免费证书 https://buy.wosign.com/FreeSSL.html 2.验证邮件域名,并下载证书 3.打开IIS,找到服务器证书选择导入,选择下载下来的证书 4.设置网 ...
- genymotion 前端调试
1. genymotion的安装见这里 注: a. 要先装VirtualBox, 再装genymotion b. VirtualBox不能太高,我装的是VirtualBox-4.1.40-101594 ...
- 【C】——线程引入 pthread_self 和 pthread_equal 原因 ——解决不同平台的问题!
1.引入pthread_equal的原因: 在线程中,线程ID的类型是pthread_t类型,由于在Linux下线程采用POSIX标准,所以,在不同的系统下,pthread_t的类型是不同的,比如在u ...
- 简介vsftpd及搭建配置 关闭selinux 不能创建文件
简介vsftpd及搭建配置一.简介 FTP(文件传输协议)全称是:Very Secure FTP Server. Vsftpd是linux类操作系统上运行的ftp服务器软件. vsftp提供三种登陆方 ...