例如,如果我不应该使用像printf,putchar这样的标准库函数,那么如何轻松地将字符打印到屏幕上.有没有简单的方法来做到这一点.我不太了解系统调用,如果我必须使用它们,那么如何?
那么任何一个建议都可以轻松打印而不使用库函数?
在标准C中,你不能.C中定义的唯一I/O是通过C标准库函数.
在给定的平台上,可能有办法:
直接进行内核调用.您可能需要编写一些内联汇编来执行此操作.您可以write
直接进行litb的调用,而无需使用C库.获取C库的源代码,看看它是如何完成的.
直接写入帧缓冲区.多用户操作系统通常不允许这样做(至少不进行任何库/内核调用).
除非您正在编写自己的C库,否则我不确定您为什么要这样做.
在linux中,您可以使用write
系统调用:
write(1, "hello\n", 6); // write hello\n to stdout
如果你不能得到足够的,你可以更低一点,一般调用系统调用:
syscall(__NR_write, 1, "hello\n", 6);
值得了解的是strace
,您可以使用它来查看运行时任何特定程序使用的系统调用.但请注意,对于"一些简单的解析器",几乎不需要使用原始系统调用.更好地使用c库的功能.
顺便说一句,如果你想在不使用c标准库的情况下在Windows中执行上述操作,请留意WriteFile和GetStdHandle函数.虽然不会像linux解决方案一样l33t.