【发布时间】:2021-10-25 10:06:27
【问题描述】:
我尝试保存 errno 的值以供以后评估, 但失败了:
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
void main(void)
{
int read_errno;
/* read() operation sets errno */
read(...);
read_errno = errno;
printf("errno was %s\n", strerror(errno));
printf("errno was %s\n", strerror(read_errno));
}
这里的结果是:
errno was Stream ioctl timeout
errno was Success
为什么我不能将errno的数值保存到变量read_errno中?
【问题讨论】:
-
您打印了两次
strerror(errno),而不是strerror(read_errno)。 -
您的程序从不使用值
read_errno,因此不清楚您是如何断定它没有正确设置的。您能否进一步解释您希望看到的内容以及原因/ -
啊,抱歉,它现在在第二次调用
printf()时使用read_errno。 -
很确定您需要包含
<string.h>才能使用strerror。 -
如果还有问题,请发帖Minimal Reproducible Example