打开文件open()函数的使用方法

tech2022-08-19  124

今天在使用open()函数时出了点小问题`

fd = open("/home/wch/projects/WriteFile", O_CREAT | O_WRONLY | O_APPEND); if (fd < 0) { perror("open file error"); return 0; } else { /*memset(writeFile,0,sizeof(writeFile)); strcpy(writeFile,"welcome to Linux,wch"); w_size = write(fd,writeFile,strlen(writeFile)); std::cout << "size=" << w_size << endl;*/ std::string str; std::cin >> str; w_size = write(fd, str.c_str(),str.size());

发现在Linux中得到的文件是二进制文件,且无法打开 然后去查找手册发现open的两种函数原型 然后查找linux系统里自带的手册

S_IRWXU00700 权限, 代表该文件所有者具有可读、可写及可执行的权限. S_IRUSR 或S_IREAD, 00400 权限, 代表该文件所有者具有可读取的权限. S_IWUSR 或S_IWRITE, 00200 权限, 代表该文件所有者具有可写入的权限. S_IXUSR 或S_IEXEC, 00100 权限, 代表该文件所有者具有可执行的权限. S_IRWXG 00070 权限, 代表该文件用户组具有可读、可写及可执行的权限. S_IRGRP 00040 权限, 代表该文件用户组具有可读的权限. S_IWGRP 00020 权限, 代表该文件用户组具有可写入的权限. S_IXGRP 00010 权限, 代表该文件用户组具有可执行的权限. S_IRWXO 00007 权限, 代表其他用户具有可读、可写及可执行的权限. S_IROTH 00004 权限, 代表其他用户具有可读的权限 S_IWOTH 00002 权限, 代表其他用户具有可写入的权限. S_IXOTH 00001 权限, 代表其他用户具有可执行的权限.

感觉应该是写文件的权限问题,这里我用了open的第二种函数原型去写文件,后来发现得到的文件不再是二进制文件了,而是可读可写可执行文件。

fd = open("/home/wch/projects/WriteFile", O_CREAT | O_WRONLY | O_APPEND, S_IRWXU);

得到的文件 打开的文件内容与输入的内容相同 后来发现可以不用系统定义好的宏,用0777也可以。0777也可以实现写入的文件最后变成可读可写可执行文件。

`

最新回复(0)