我不知道我是如何错误地创建这个文件的
I cannot figure out how I created this file wrong
我一直无法读取我使用 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, 0);
readStatus = read(XXXfid, buffer, 120);
if (readStatus<0) {printf("error with read2"); return 0;}
所有其他命令都运行良好,无论我尝试什么(即关闭和重新打开等)我都无法读取文件。我有读写权限,是否需要给所有人读写权限?我不会这么想,因为我得到的错误是 9- Bad File Descriptor。我完全不知所措,任何帮助将不胜感激
我相信八进制符号我的许可是 600。如果有帮助,这是二进制的 110 000 000,我的 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);
我一直无法读取我使用 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, 0);
readStatus = read(XXXfid, buffer, 120);
if (readStatus<0) {printf("error with read2"); return 0;}
所有其他命令都运行良好,无论我尝试什么(即关闭和重新打开等)我都无法读取文件。我有读写权限,是否需要给所有人读写权限?我不会这么想,因为我得到的错误是 9- Bad File Descriptor。我完全不知所措,任何帮助将不胜感激 我相信八进制符号我的许可是 600。如果有帮助,这是二进制的 110 000 000,我的 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);