Linux下C语言的printf是C标准I/O库中的格式化输出函数之一,将格式化数据写到标准输出stdout。
1 printf首先把格式化数据写到标准I/O的缓存,可以用setbuf和setvbuf设置缓存选项;
2 调用write系统调用,把标准I/O的缓存数据写到文件描述符STDOUT_FILENO,则标准I/O缓存中的数据就被送到内核缓存;
3 内核把缓存中的数据输出到标准输出stdout对应的文件描述符STDOUT_FILENO。
这是我的理解,基本应该就是这个流程,内核层次上的细节我就不清楚了。
另外:
1 printf返回写入的字节数;
2 printf处理可变参数表使用的是va_list,当然也有相应的vprintf,它的第三个参数就是一个va_list