C 为什么我的read()系统调用返回-1?
我在班上做一个关于文件和I/o系统调用的项目。为了回答我的问题,我简化了下面的代码。这本手册我已经读了好几遍了。我以为我理解了read(),但显然我遗漏了什么C 为什么我的read()系统调用返回-1?,c,linux,system-calls,C,Linux,System Calls,我在班上做一个关于文件和I/o系统调用的项目。为了回答我的问题,我简化了下面的代码。这本手册我已经读了好几遍了。我以为我理解了read(),但显然我遗漏了什么 int a, bytesRead; char buffer[150]; a = open("/home/JohnDoe/Dowloads/TestFile.dat", 0); if (a < 0) { printf("Error opening file TestFile.dat\n"); return 0; }
int a, bytesRead;
char buffer[150];
a = open("/home/JohnDoe/Dowloads/TestFile.dat", 0);
if (a < 0) {
printf("Error opening file TestFile.dat\n");
return 0;
}
bytesRead = read(a, buffer, 150);
printf("Bytes read: %d\n", bytesRead);
inta,字节读取;
字符缓冲区[150];
a=打开(“/home/JohnDoe/Dowloads/TestFile.dat”,0);
if(a<0){
printf(“打开文件TestFile.dat时出错”);
返回0;
}
字节读取=读取(a,缓冲器,150);
printf(“字节读取:%d\n”,字节读取);
我不明白为什么这个read()调用返回-1。如果我正确理解手册,read()将获取参数文件id、缓冲区和要读取的字节数。整数a(文件id)返回时没有错误,我创建了缓冲区,读取150字节应该没有问题,因为文件包含的字节远远超过150字节。任何帮助都将不胜感激。检查。如果read返回-1,则会设置errno,您可以查看错误发生的位置。检查错误所在。您可以使用或打印一条漂亮的消息。我真的怀疑您是否有名为
~/Dowloads/TestFile.dat
的文件。您确实有一个名为~
的目录?另一方面,请不要使用。如果要以只读方式打开文件,请使用适当的O_RDONLY
标志。关于路径问题,可以使用相对路径,并对其进行详细记录。或者可以使用命令行参数提供路径,或者在程序中读取路径。编辑后的版本是否仍返回-1?如果这样做有效,那么请恢复编辑,因为询问与问题中所示不同的代码中的错误是没有意义的。