Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

380
Vistas
¿Cómo funciona la función read()? (¿Qué sucede con los datos no leídos en el búfer?)

Estaba tratando de leer la entrada del terminal usando read() en un ciclo while como condición, pero el código no se ejecuta hasta que finaliza el ciclo.

Aquí está mi código:

 #include<unistd.h> int main(void) { char ch; while(read(STDIN_FILENO,&ch,1) == 1 && ch != 'q') { printf("success"); } return 0; }

me da la salida:

 t fgr vr q successsuccesssuccesssuccesssuccesssuccesssuccesssuccesssuccesssuccess

Incluso cuando trato de leer datos normalmente, los datos no leídos en el búfer terminan así.

código:

 #include<unistd.h> int main(void) { char ch; read(STDIN_FILENO,&ch,1); return 0; }

salida en terminal

 user1@lap:~/Desktop$ ./program2e3 ted pradeep@LLP:~/Desktop$ ed

¿Por qué los datos no leídos se convierten en el siguiente comando?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debido a que los datos todavía están en el búfer IO en el kernel en lugar del búfer STDIO en su proceso, los datos no leídos serán leídos por el siguiente proceso que intente leerlos (es decir, el proceso de shell). Esto se debe a que el identificador abierto se pasó del proceso de shell a su proceso. Si hubiera abierto el dispositivo tty usted mismo, eso no habría sucedido.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda