Saltar al contenido

¿Cuál es la diferencia entre stdin y STDIN_FILENO?

Haz todo lo posible por entender el código bien previamente a aplicarlo a tu trabajo y si ttienes algo que aportar puedes comentarlo.

Solución:

La interfaz. Como todo el mundo ha dicho, stdin es un FILE * como lo define la biblioteca c estándar. Puede usar algunas de las interfaces de nivel superior como fread, fwritey fprintf. Por otro lado, STDIN_FILENO es solo un descriptor de archivo (casi seguro 0). Esto utiliza una interfaz de nivel ligeramente inferior a través de los gustos de read y write.

stdin es un puntero de ARCHIVO predeterminado que se usa para obtener entradas de nada menos que la entrada estándar.

STDIN_FILENO es el número de descriptor de archivo de entrada estándar predeterminado que es 0. Es esencialmente una directiva definida para uso general.

Desde /usr/include/stdio.h,

/* Standard streams.  */
extern struct _IO_FILE *stdin;          /* Standard input stream.  */
extern struct _IO_FILE *stdout;         /* Standard output stream.  */
extern struct _IO_FILE *stderr;         /* Standard error output stream.  */
/* C89/C99 say they're macros.  Make them happy.  */
#define stdin stdin
#define stdout stdout
#define stderr stderr

Desde /usr/include/unistd.h

/* Standard file descriptors.  */
#define STDIN_FILENO    0       /* Standard input.  */
#define STDOUT_FILENO   1       /* Standard output.  */
#define STDERR_FILENO   2       /* Standard error output.  */

Ex, stdin (_IO_FILE definido en /usr/include/libio.h) es una estructura de datos. STDIN_FILENO es un macro constante, que apunta a un descriptor de archivo utilizado por kernel.

#include 
#include 

void
stdin_VS_STDIN_FILENO(void)

    printf("stdin->_flags = %hdn", stdin->_flags);
    printf("STDIN_FILENO  : %dn", STDIN_FILENO);


int
main(void)

    stdin_VS_STDIN_FILENO();
    return 0;

Aquí puedes ver las comentarios y valoraciones de los lectores

Agradecemos que desees añadir valor a nuestra información tributando tu experiencia en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *