linux c 利用mkstemp生成临时文件

1300阅读 0评论2014-07-16 mxcai2005
分类:嵌入式

下面的代码是每隔5s就重新生成一个以tmp_为开头的临时文件 

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>

  4. int main(int argc, char *argv[])
  5. {
  6.     int fd;

  7.     while (1) {
  8.         char filename[] = "tmp_XXXXXX";

  9.         printf("make temp file ...\n");
  10.         fd = mkstemp(filename);
  11.         if (fd < 0) {
  12.             perror("mkstemp:");
  13.             exit(1);
  14.         }

  15.         printf("wait 5 seconds ...\n");
  16.         sleep(5);


  17.         printf("unlink file...\n");
  18.         unlink(filename);
  19.         close(fd);
  20.     }

  21.     return 0;
  22. }
说明:
1. filename 必须定义成 char filename[] = "tmp_XXXXXX"; 即filename的值是可被改变的
而不能定义成 char *filename = "tmp_XXXXXX"; 因为定义 char *filename时,则filename 的内容是固定的不可变的,相当于const char *filename
但mkstemp 生成的文件名要必须以 XXXXXX 为结尾,这个6个数会被替换。

2.这里是通过while 来实现实循环生成, char filename[] = "tmp_XXXXXX"; 不能放在 while 语句之外,
否则生成一个临时文件之后会报无效的数
的错误,
这是因为生成了一个临时文件之后 filename 的值已被改变不是 tmp_XXXXXX了,
而是 tmp_加随机数据,再把这个filename 传给mkstemp时已不符合 filename 后6位必须是XXXXXX的要求了,所以提示无效参数的错误

 


上一篇:基于centos 6.5制作自己的发行版
下一篇:Sed在匹配行前后加入一行