为什么我的read()系统调用返回-1?

问题描述 投票:-1回答:1

我正在我的课堂上做一个关于文件和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个。任何帮助将不胜感激。

c linux system-calls
1个回答
0
投票

检查errno。如果read返回-1,则将设置errno,您可以看到错误发生的位置。

© www.soinside.com 2019 - 2024. All rights reserved.