Обнаружить дескриптор файла NUL (isatty is bogus)

Следующий файл C дает фиктивный результат, когда к нему передается NUL:

int main()
{
  printf("_isatty = %d\n", _isatty(0));
}

результат:

C:\Users\Edward\Dev\nulltest> test.exe < NUL
_isatty = 64

Я почти уверен, что NUL (он же / dev / null) не является терминалом устройство! Поэтому мне нужно по-другому определить, соответствует ли дескриптор файла NUL. Число не имеет конкретного значения; Я вижу это, когда на самом деле подключен терминал.

Что мне делать? Этот вопрос предлагает использовать отрывочную недокументированную функцию, чтобы получить основное имя, предположительно сравнивая его с NUL, но это кажется мне не идеальным. Есть ли лучший способ?

PS Это поможет решить эту ошибку GHC .

7
задан Community 23 May 2017 в 12:16
поделиться