在linux下使用c语言操作临时文件

文章作者 100test 发表时间 2007:10:10 11:24:34
来源 100Test.Com百考试题网


有时程序需要存储很大量的数据,或者在几个进程间交换数据,这时您可能考虑到使用临时文件。使用临时文件要考虑几个问题:

1、保证临时文件间的文件名不互助冲突。

2、保证临时文件中内容不被其他用户或者黑客偷看、删除和修改。

所以在linux下有专门处理临时文件的函数

mkstemp函数
mkstemp函数将在系统中以独一无二的文件名创建一个文件并打开,而且只有当前用户才有访问这个临时文件的权限,当前用户对这个临时文件可以打开并进行读、写操作。mkstemp函数只有一个参数,这个参数是个以“XXXXXX”结尾的非空字符串。mkstemp函数会用随机产生的字符串替换“XXXXXX”,保证了文件名的唯一性。函数返回一个文件描述符,如果执行失败返回-1。在glibc 2.0.6 以及更早的glibc库中这个文件的访问权限是0666 ,glibc 2.0.7 以后的库这个文件的访问权限是0600。

当临时文件完成她的使命如果不把它清除干净把或者程序由于意外在临时文件被清除前就已经退出,临时文件所在的目录会塞满垃圾。由于mkstemp函数创建的临时文件不能自动删除(请参考下文中的tmpfile函数)。执行完mkstemp函数后要调用unlink函数,unlink函数删除文件的目录入口,所以临时文件还可以通过文件描述符进行访问,直到最后一个打开的进程关闭文件操作符,或者程序退出后临时文件被自动彻底地删除。

例程:
直接使用advanced linux programming的例程,只把注释翻译一下
#include
#include
/* A handle for a temporary file created with write_temp_file. In
this implementation, it’s just a file descriptor. */
/*write_temp_file是个操作临时文件的句柄,本例中只是个文件描述符*/
typedef int temp_file_handle.
/* Writes LENGTH bytes from BUFFER into a temporary file. The
temporary file is immediately unlinked. Returns a handle to the
temporary file. */
/*在这函数从BUFFER中向临时文件写入LENGTH字节数据。临时文件在刚一创建就被删除掉。函数会返回临时文件的句柄。*/


相关文章


C辅导:三视图的画法
用C语言编写Windows服务程序的五个步骤
C语言中实现点在多边形内算法
使用Kylix3开发ApacheDSO
在linux下使用c语言操作临时文件
用键盘移动光标的简单介绍
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛