问题描述
我在使用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- --- ---
解决方法
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);