在测试我的代码时,我发现readline会产生错误2。这是ENOENT,意思是没有这样的文件或目录。有人知道为什么吗??
#include <readline/readline.h>
#include <stdio.h>
#include <errno.h>
int main()
{
char *a = readline("shell$");
printf("%dn", errno);
while (a)
{
printf("%sn", a);
readline("shell$");
}
}
是否必须在readline之后将errno设置为2?或者是错误吗?
它在Macos
使用此命令编译->gcc-lreadline main.c
由于我使用的是某种机构提供的Mac,我没有超级特权。也许是它造成了错误?许可的事情?
如果函数没有返回错误值(或以其他方式指示存在错误(,则一般来说,errno
的值不会由它设置或重置。
因此,readline
所做的某些操作可能有错误,但它是可恢复的,readline
成功了,并且没有接触errno
本身。
因此,在检查errno
之前,您必须检查函数是否失败(或者以其他方式记录为以某种特定方式设置errno
(,通常是通过检查返回值。