我正在我的课堂上做一个关于文件和I / O系统调用的项目。为了回答我的问题,我简化了下面的代码。我已多次阅读本手册。我以为我了解read(),但显然我遗漏了一些东西。
int a, bytesRead;
char buffer[150];
a = open("~/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);
我不知道为什么这个read()调用返回-1。如果我正确理解了手册,read()会使用参数文件ID,缓冲区和要读取的字节数作为参数。整数(文件ID)没有错误地返回,我创建了缓冲区,读取150个字节应该没有问题,因为文件包含的字节数超过150个。任何帮助将不胜感激。
检查errno。如果read返回-1,则将设置errno,您可以看到错误发生的位置。