realpath() в моем env не любит NULL в качестве второго аргумента?

Я на linux box и /proc/self/exe действительно поддерживается

  • ls -l /proc/self/exe показывает, что это связано с /usr/bin/ls на данный момент я управляю командой
  • realpath /proc/self/exe распечатывает /usr/bin/realpath как и ожидалось
  • обе команды выходят со статусом 0

Но:

if (NULL == realpath("/proc/self/exe", NULL))
{
  printf("this prints unexpectedly, %s\n", strerror(errno));
}

С этой точки зрения, errno является 22 и я вижу Invalid argument, Зачем? Или - как понять, почему?

1 ответ

Решение

Такое поведение будет происходить на glibc версии ниже 2.3, как указано в man realpath:

ОШИБКИ
............
EINVAL - path является NULL, (В версиях glibc до 2.3 эта ошибка также возвращается, если resolved_path является NULL.)

Другие вопросы по тегам