热度 13
2012-12-5 16:35
3457 次阅读|
0 个评论
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 ; 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创建文件,只要参数设置正确,就可读写文件!!