Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1562143
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2014-07-16 22:18:16

下面的代码是每隔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的要求了,所以提示无效参数的错误

 


阅读(1252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~