Mi chiedevo la differenza tra stdout
e STDOUT_FILENO
in Linux C.La differenza tra stdout e STDOUT_FILENO in LINUX C
Dopo un po 'di lavoro di ricerca, ho trarre la seguente conclusione. Potresti aiutarmi a rivederlo e correggere eventuali errori in esso? Grazie
stdout
appartiene al flusso I/O standard del linguaggio C; il cui tipo è FILE * e definito in stdio.hSTDOUT_FILENO
, in possesso di un tipo int, è definito inunistd.h
. È un descrittore di file del sistema LINUX. Inunistd.h
, è spiegata come di seguito:
The following symbolic constants shall be defined for file streams: STDERR_FILENO File number of stderr; 2. STDIN_FILENO File number of stdin; 0. STDOUT_FILENO File number of stdout; 1.
Quindi, a mio parere, il STDOUT_FILENO
appartiene a livello di sistema di chiamata e, in una certa misura, come un sistema di API. STDOUT_FILENO
può essere utilizzato per descrivere qualsiasi dispositivo nel sistema.
Il stdout
individua in un livello superiore (livello utente?) E in realtà racchiude i dettagli di STDOUT_FILENO
. stdout
dispone di un buffer I/O.
Questa è la mia comprensione della loro differenza. Ogni commento o correzione è apprezzato, grazie.
Qual è la domanda? –
@KerrekSB La domanda è: non sono sicuro se la mia comprensione sia corretta? –
'STDOUT_FILENO' non è * Linux * specifico. Tutti i sistemi POSIX (e Unix) ce l'hanno (ad esempio anche MacOSX o FreeBSD o Solaris) –