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
, fwrite
y 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.