调用readline()会导致C中出现错误2.有人知道这件事吗



在测试我的代码时,我发现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(,通常是通过检查返回值。

相关内容

最新更新