原创 linux调用open和creat创建文件的区别

2012-12-5 16:35 3453 13 13 分类: MCU/ 嵌入式

open(const char* pathname, (O_CREAT|O_WRONLY|O_TRUNC),mode_t mode);

creat(const char* pathname,mode_t mode);,

mode参数可以设置为644,755等,

调用creat创建文件时,文件为可写,但是不可读,即便mode指明文件为755.

如下程序可检验creat:

 

 8 int main(void)
  9 {
 10     char *file = "tmp_file";
 11     char *buf = "hello world";
 12     char buf_a[100];
 13     int fd, len;
 14     if((fd = creat(file, 0755)) < 0)
 15         printf("creat error\n");
 16 
 17     len = write(fd, buf, strlen(buf));
 18 
 19     printf("%d\n", len);
 20 
 21     if(read(fd, buf_a, len) < 0)
 22         printf("read error\n");
 23 
 24     close(fd);
 25 
 26     if((fd = open(file , O_RDWR)) < 0)
 27         printf("open error1\n");
 28     read(fd, buf_a, len);
 29 
 30     printf("%s %d\n", buf_a, len);
 31 
 32     close(fd);
 33     return 0;
 34 }
 
程序执行到第21行,read出现错误。即可证明creat创建文件可写,但不可读,要想读取文件,只能关闭文件,再次调用open打开文件,指定flags(O_RDONLY或者O_RDWR)。即可读,即可读取文件正确。
 
而调用open创建文件,只要参数设置正确,就可读写文件!!
 

文章评论0条评论)

登录后参与讨论
我要评论
0
13
×
广告
关闭 站长推荐上一条 /2 下一条