Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

277
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda