当前位置: 技术问答>linux和unix
关于open()函数的问题,请指教
来源: 互联网 发布时间:2015-12-09
本文导语: /* 该函数首先是向生成的文件中写入一串字符,然后关闭 在打开文件,将一串字符输出到字符数组中,接着显示 环境:linux(fedora 5) */ #include #include #include #include #include #include int main(int argc, char * argv[]) {...
/*
该函数首先是向生成的文件中写入一串字符,然后关闭
在打开文件,将一串字符输出到字符数组中,接着显示
环境:linux(fedora 5)
*/
#include
#include
#include
#include
#include
#include
int main(int argc, char * argv[])
{
int fd, size;
char *str = "linux Programmingn";
char buffer[100];
char *filename = "./open2.out";
fd = open(filename, O_WRONLY|O_CREAT);
write(fd, str, strlen(str));
close(fd);
fd = open(filename, O_RDONLY); /*为什么此处运行之后fd的结果是-1*/
size = read(fd, buffer, sizeof(buffer));
close(fd);
printf("the buffer is %s", buffer); /*从而导致该行的输出是“the buffer is ”,而不是所期望的“the buffer is linux Programming”*/
return 0;
}
该函数首先是向生成的文件中写入一串字符,然后关闭
在打开文件,将一串字符输出到字符数组中,接着显示
环境:linux(fedora 5)
*/
#include
#include
#include
#include
#include
#include
int main(int argc, char * argv[])
{
int fd, size;
char *str = "linux Programmingn";
char buffer[100];
char *filename = "./open2.out";
fd = open(filename, O_WRONLY|O_CREAT);
write(fd, str, strlen(str));
close(fd);
fd = open(filename, O_RDONLY); /*为什么此处运行之后fd的结果是-1*/
size = read(fd, buffer, sizeof(buffer));
close(fd);
printf("the buffer is %s", buffer); /*从而导致该行的输出是“the buffer is ”,而不是所期望的“the buffer is linux Programming”*/
return 0;
}
|
新建的文件存取权限引起的问题,所以第2个open会返回-1.测试之前先删掉原来的open2.out
|
char *filename = "./open2.out";
fd = open(filename, O_WRONLY|O_CREAT, S_IRWXU);
write(fd, str, strlen(str));
fd = open(filename, O_WRONLY|O_CREAT, S_IRWXU);
write(fd, str, strlen(str));