Jee*_*tel 1 c linux file-io errno linux-kernel
在我的代码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);
Run Code Online (Sandbox Code Playgroud)
输出是
errno is 0 and fd is -1
Run Code Online (Sandbox Code Playgroud)
为什么没有设置errno?我如何确定open()失败的原因?
cni*_*tar 12
Run Code Online (Sandbox Code Playgroud)int errno=0;
问题是你重新申报errno,从而影响全局符号(甚至不需要是一个简单的变量).效果是你open设置和设置的是不同的东西.相反,你应该包括标准errno.h.