Il seguente file C dà un risultato fasullo quando NUL viene convogliato ad esso:Rileva NUL descrittore di file (isatty è fasullo)
int main()
{
printf("_isatty = %d\n", _isatty(0));
}
il risultato è:
C:\Users\Edward\Dev\nulltest> test.exe < NUL
_isatty = 64
Sono abbastanza sicuro NUL (ovvero/dev/null) non è un dispositivo terminale! Quindi ho bisogno di rilevare in un altro modo se il descrittore di file corrisponde o meno a NUL. Il numero non ha alcun significato specifico; Lo vedo quando in realtà ho un terminale collegato.
Cosa devo fare? This question suggerisce di utilizzare una funzione non documentata per ottenere il nome sottostante, presumibilmente confrontandolo con NUL, ma non mi sembra ideale. C'è un modo migliore?
P.S. Questo aiuterebbe a risolvere this GHC bug.
solo per interesse (e non sto dicendo che quello che stai facendo è sbagliato): Perché ti interessa dove l'ingresso della venuta a partire dal? – paxdiablo
Ci sono molte applicazioni che fanno cose diverse quando rilevano un terminale. Ad esempio, se digiti "python", passerà in modalità interattiva, ma "echo" print \ "bar \" "| python 'non mostrerà alcuna schermata di inizializzazione. –
I _hate_ quei programmi :-) – paxdiablo