我无法弄清楚我是如何错误地创建此文件的

问题描述

我在使用creat系统调用从c中创建的文件读取数据时遇到了麻烦。这是代码:

XXXfid = creat ("XXX",384);
    if (XXXfid<0) {printf("Error with creat"); return 0;}
    
        writeStatus = write (XXXfid,"limp",4);
    if (writeStatus<0) {printf("error with write"); return 0;}
    lseek(XXXfid,0);
    
    readStatus = read(XXXfid,buffer,120);
    if (readStatus<0) {printf("error with read2"); return 0;}

其他所有命令都可以正常运行,无论我尝试执行什么操作(即关闭和重新打开等),我都无法读取文件。我具有读写权限,是否需要授予所有人读写权限?考虑到我遇到的错误是9-错误的文件描述符,我不会这么想。我完全不知所措,任何帮助将不胜感激 我相信使用八进制表示法时,我的允许值为600。如果有帮助,则为二进制数110000000,而我的ls -l确认这是-rw- --- ---

解决方法

根据specification

creat(path,mode)

等同于

open(path,O_WRONLY|O_CREAT|O_TRUNC,mode)

请注意,这些标志包含O_WRONLY,而不是O_RDWR。这意味着您只能写入文件描述符,而不能读取文件描述符。

如果您想读写,请使用open()并带有适当的标志。

XXXfid = open("XXX",O_RDWR | O_CREAT | O_TRUNC,0600);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...