如何在不使用std lib函数的情况下打印东西?

时间:2014-10-05 06:46:00

标签: c

在C语言中,当在屏幕上打印内容时,我们通常使用printfputs等。这些都在头文件或其他头文件中定义。

有没有办法在不使用这些功能的情况下在屏幕上打印某些内容?也就是说,printf是如何实现的?

4 个答案:

答案 0 :(得分:11)

最终,C函数printf将直接或通过sys_write(参见write)进行man 2 write系统调用。实际的实现取决于编译器和标准库。

答案 1 :(得分:2)

打印到屏幕需要访问帧缓冲区(硬件),并且不允许用户空间程序直接访问它。所以他们做的是进行系统调用,内核为它们执行所需的功能。 printf - > write系统调用 - > kernel将数据写入framebuffer,然后将控制权返回给用户程序。 即使您不想使用printfputs(它们在托管的libc中实现),您仍然必须使用write系统调用来告诉内核您要在哪个设备上编写缓冲液中。

答案 2 :(得分:1)

标准头文件不一定是包含用C代码编写的函数的库 它们是C" interfase"的功能,但很可能它们包含显式机器代码,在每种情况下都适用于目标系统。
以这种方式,标准头文件提供了在严格的C代码中无法实现的特殊过程的方法。

printf()的特定情况下,情况更加清晰,因为如果没有标头是#include-d,那么通过使用仅执行输入的C语法就没有任何机制/输出操作。

答案 3 :(得分:0)

library ncurses可以为您提供帮助,但是如果您想使用低级函数,请使用write(),如果您想进行内核编程,则必须使用printk()