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条评论)
登录后参与讨论