printf和printk
时间: 2023-09-27 21:08:16 浏览: 207
`printf` 和 `printk` 都是输出函数,但是它们的使用场景和作用不同。
`printf` 是 C 语言标准库中的一个函数,主要用于输出格式化字符串到标准输出设备,例如终端或者控制台。它的原型为:
```c
int printf(const char *format, ...);
```
其中,第一个参数是格式化字符串,后面的参数是可变参数列表,用于替换格式化字符串中的占位符。例如:
```c
int num = 10;
printf("The value of num is %d\n", num);
```
这行代码会输出 `The value of num is 10` 到标准输出设备。
`printk` 则是 Linux 内核中的一个函数,主要用于输出内核级别的调试信息。它的使用方式与 `printf` 类似,但是它的输出不是到标准输出设备,而是到内核日志缓冲区。这个缓冲区可以被一些工具读取,例如 `dmesg` 命令。
`printk` 的原型为:
```c
int printk(const char *format, ...);
```
和 `printf` 一样,第一个参数是格式化字符串,后面的参数是可变参数列表。例如:
```c
int num = 10;
printk(KERN_INFO "The value of num is %d\n", num);
```
这行代码会输出 `The value of num is 10` 到内核日志缓冲区,并且带有一个内核级别的信息标志(`KERN_INFO`)。在调试内核时,我们可以通过读取内核日志缓冲区来获取一些有用的调试信息。
阅读全文