c - 为什么 open() 失败并且未设置 errno?

标签 c linux file-io linux-kernel errno

在我的代码中,open() 失败,返回码为 -1,但不知何故 errno 未设置。

int fd;
int errno=0;
fd = open("/dev/tty0", O_RDWR | O_SYNC);
printf("errno is %d and fd is %d",errno,fd);

输出是

errno is 0 and fd is -1

为什么没有设置 errno?我如何确定 open() 失败的原因?

最佳答案

int errno=0;

问题是您重新声明了 errno,从而隐藏了全局符号(它甚至不需要是普通变量)。结果是open 设置的和您打印的是不同的东西。相反,您应该包含标准的 errno.h

关于c - 为什么 open() 失败并且未设置 errno?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11396589/

相关文章:

c - 为什么读取 '+' 和 '-' 在 Linux 中不起作用?

c++ - 可以打开小的 ASCII 文件,但不能打开大的二进制文件吗?

c - 在 Jmeter 中运行 C 可执行文件(测试)

c - execvp 实际上做了什么?

c - 从串口读取超过8个字节

linux - 使用 diff 命令,忽略行尾的字符

linux - 删除除最后 5 个文件夹之外的所有文件夹的 Shell 脚本

python - 如何在 Python 中连接文本文件?

Java - 并行读取二进制文件

c - 更优雅的解析方式