C 我的环境中的realpath()不';你不喜欢NULL作为第二个参数吗?

C 我的环境中的realpath()不';你不喜欢NULL作为第二个参数吗?,c,linux,realpath,C,Linux,Realpath,我在linux机器上,/proc/self/exe似乎受到支持: ls-l/proc/self/exe显示在我运行命令时它链接到了/usr/bin/ls realpath/proc/self/exe按预期打印出/usr/bin/realpath 两个命令都以状态0退出 但是: 此时,errno是22,我看到参数无效。为什么?或者——如何找出原因?这种行为会发生在glibc2.3以下版本上,如中所述: 错误 ……… EINVAL-路径为空。(在2.3之前的glibc版本中,此错误为 如果res

我在linux机器上,
/proc/self/exe
似乎受到支持:

  • ls-l/proc/self/exe
    显示在我运行命令时它链接到了
    /usr/bin/ls
  • realpath/proc/self/exe
    按预期打印出
    /usr/bin/realpath
  • 两个命令都以状态
    0退出
但是:


此时,
errno
22
,我看到
参数无效。为什么?或者——如何找出原因?

这种行为会发生在
glibc
2.3以下版本上,如中所述:

错误
………
EINVAL-
路径
。(在2.3之前的glibc版本中,此错误为 如果
resolved_path
NULL
,也会返回


您的
glibc
版本是什么?
ldd--version
ldd(GNU-libc)2.20
那么,您应该检查您的glibc包版本(它是哪个版本?)。但是2.2比2.3低,所以我的答案是正确的。
if (NULL == realpath("/proc/self/exe", NULL))
{
  printf("this prints unexpectedly, %s\n", strerror(errno));
}