Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

284
Views
¿Cómo funciona la función de biblioteca estándar en C?

Mientras revisaba las funciones estándar de la biblioteca de C ( glibc ), descubrí que printf() en realidad llama a las funciones puts() ( _IO_puts ). Pero no puedo averiguar cómo la función puts realmente escribe en la salida stdout .

¿Utiliza la llamada al sistema write() definida en unistd.h algo más? Una cosa que descubrí es que puts() en realidad llama a _IO_xputn a través _IO_putn .

Por favor ayuda. Gracias.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Para los sistemas basados en Unix de los que Linux forma parte, la mayoría de las funciones de la biblioteca stdio son contenedores que están una capa por encima de las llamadas del sistema de E/S estándar. Verá, el sistema operativo proporciona un conjunto de API llamadas llamadas al sistema. Las aplicaciones no pueden acceder directamente a los recursos de hardware y, por lo tanto, suelen llamar a estas "llamadas al sistema" cada vez que necesitan hacer algo privilegiado, como escribir en la pantalla o leer desde el teclado.

En Unix, todo se abstrae como un archivo, por lo que siempre que necesite escribir caracteres en una pantalla, todo lo que necesita hacer es abrir algún archivo que represente la "pantalla" y escribir esos caracteres allí. El núcleo se encargará del resto. Sencillamente, así es como harías esto en C:

 #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #define BUFF_SIZE 2 int main() { int terminal; char buffer[BUFF_SIZE] = "C\n"; // This will store the character to print + new line terminal = open("/dev/tty", O_WRONLY); // systemcall to open terminal if (terminal < 0) exit(1); // some error happened dup2(terminal, STDOUT_FILENO); // use our newly opened terminal as default Standard output if (write(terminal, buffer, BUFF_SIZE) != BUFF_SIZE) // systemcall to write to terminal exit(1); // We couldn't write anything }

Esto solo muestra que todo en stdio está superpuesto a las llamadas básicas del sistema de E/S. Estas llamadas al sistema son lectura, escritura, apertura, etc. Si desea obtener más información sobre las llamadas al sistema y algunos aspectos internos del sistema operativo, lea el libro "Tres piezas fáciles" de Andrea Arpaci-Dusseau.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!