c语言中printk用法,printk和printf的区别

&&&

大部分常用的C库函数在Linux内核中都已经得到了实现。在所有没有实现的函数中,最著名的就数printf()函数了。内核代码虽然无法调用

printf()函数,但它可以调用printk()函数。printk()函数负责把格式化好的字符串拷贝到内核日志缓冲上,这样syslog程序就可

以通过读取该缓冲区来获取内核信息。printk()的用法很像printf():

&

printk("Hello world!A

string:%s and an integer:%d\n",a_string,an_integer);

&

printk()和printf()之间的一个显著区别在于printk()允许通过指定一个标志来设置优先级。syslog会根据这个优先级标

志来决定在什么地方显示这条系统信息。下面是一个使用这种优先级标志的例子:

&

printk(KERN_ERR "this is an

error!\n");

&&&&&

printk()函数是直接使用了向终端写函数tty_write()。而printf()函数是调用write()系统调用函数向标准输出设备写。所以

在用户态(如进程0)不能够直接使用printk()函数,而在内核态由于他已是特权级,所以无需系统调用来改变特权级,因而能够直接使用

printk()函数。

printf是咋使用了标准的C库函数的时候才能使用的,而内核中无法使用标准的C库函数,所以就连最常见的printf都不能使用。

例如子printk函数的字符串参数中使用了KERN_ALERT,它实际上扩展为字符串:“<1>”,而这部分信息没有输出到终端。实际上,这部分是内核信息的日志级别,只有超过了当前日志级别的信息才会输出到终端。当前内核的日志级别可以在/proc/sys/kernel/printk文件中看到。这个文件包含了四个整数,其中前两个是控制台的当前日志级别和默认日志级别。我们在printk的参数中使用较高的日志级别就是要保证信息得到输出。在头文件里一共定义了8个级别(0-7)的输出,从高到低分别由如下常量表示:

KERN_EMERG         :    最高级别,一般只用来打印崩溃信息

KERN_ALERT         :    需要立即处理的信息

KERN_CRIT          :    关键信息,一般用来显示严重的硬件和软件错误

KERN_ERR           :    用来显示硬件错误

KERN_WARNING       :    显示不会造成严重错误的警告信息

KERN_NOTICE        :    显示需要引起注意的信息

KERN_INFO          :  显示一般信息,例如驱动所发现的硬件列表

KERN_DEBUG    :  用来显示调试信息

printk与printf的一个区别printk是“行驱动”的,也就是说只有收到一个换行符数据才会真正输出到终端,否则就不会有任何信息输出。另一个值得注意的问题是我们在调试嵌入式设备的时候,经常是从串口获得显示信息,如果我们使用printk过于频繁的话,串口的传输速度就会成为瓶颈,这样会造成系统的性能下降甚至停止反应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Java技术》第八次作业

《Java技术》第八次作业 &#xff08;一&#xff09;学习总结 1.用思维导图对本周的学习内容进行总结。 2.通过实验内容中的具体实例说明在执行executeUpdate&#xff08;&#xff09;方法和executeQuery&#xff08;&#xff09;方法中使用动态参数时&#xff0c;为什么要使用…

android 短信 aapp,谈谈App的统一跳转和ARouter

App中每次页面跳转,都需要调用统一导航, 它用的非常频繁, 有必要对它进行一下梳理. 让他能用起来简单方便, 同时能支持各种常用的跳转业务场景.一. Android跳转遇到的问题1.intent-filter跳转不好管理Intent intent new Intent();intent.setAction(Intent.ACTION_SENDTO);inte…

android 自定义spnner弹出框,PopupWindow,ListView实现自定义Spinner

最终的效果图,点击86弹出popup这里写图片描述PupupWindow的布局文件为一个ListView 作为pupup的主体内容android:orientation"vertical"android:layout_width"match_parent"android:layout_height"match_parent">android:id"id/register…

hdu 6026 Deleting Edges(最短路计数)

题目链接&#xff1a;hdu 6026 Deleting Edges 题意&#xff1a; 给你n个点&#xff0c;和一个邻接矩阵&#xff0c;非0表示有边&#xff0c;0表示没边。 现在让你删一些边&#xff0c;构成一棵树&#xff0c;使得每个点到0这个点的距离为没删边之前的最短路。 问有多少棵这样的…

android 服务端 导入工程,如何导入与配置从网上下载的android源代码及服务器端源代码...

将Android项目导入import进Eclipse。 注意SDK版本是否匹配 。 服务器部署到Tomcat下。 你得在数据库中将这个点菜系统的数据库和表建好&#xff0c;或者导入。在服务器的代码中修改好你的数据库名和密码。首先看你的服务器配置的是什么环境 一般就2种 linux系统 window系统&…

mysql: 模糊查询 feild like keyword or feild like keyword , concat(feild1,feild2,feild3) like keyword...

mysql: 模糊查询 feild like %keyword% or feild like% keyword% , 或者 concat(feild1,feild2,feild3) like %keyword% 转载于:https://www.cnblogs.com/achengmu/p/6877852.html

android按钮控件常见问题,Android的基本控件和Activity的应用总结

Android的基本控件常用界面控件TextView 显示文本信息button 普通按钮EditText 可编辑的文本框组件(输入框)ImageView 用于显示图片ImageBUtton 图片按钮CheckBox 复选框RadioGroup 单选按钮组Spinner 下拉列表组件ProgressBar进度条SeekBar拖动条RatingBar评分组件ListView列表…

Xamarin XAML语言教程构建进度条ProgressBar

Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar&#xff0c;ProgressBar被称为进度条&#xff0c;它类似于没有滑块的滑块控件。进度条总是水平放置的。本节将讲解如何使用进度条。注意&#xff1a;进度条在各个平台下基本相同&#xf…

android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...

页面类类名称&#xff1a;MainActivitypackage com.example.android_fonts_test;import android.support.v7.app.ActionBarActivity;import android.content.Context;import android.graphics.Typeface;import android.os.Bundle;import android.view.Menu;import android.view…

android 交叉编译so,Android交叉编译htop和使用方法

htop来源于top&#xff0c;top是Unix/linux下功能强大的性能检测工具之一&#xff0c;用于实时检测并统计进程的属性和状态&#xff0c;基于ncurses库&#xff0c;可上显示文字界面。但是top已经非常陈旧&#xff0c;不支持鼠标点击操作&#xff0c;不支持查看进程的各个子线程…

Java笔记(08):面向对象--抽象类

1、抽象类概述&#xff1a; 1 /*2 抽象类的概述&#xff1a;3 动物不应该定义为具体的东西&#xff0c;而且动物中的吃&#xff0c;睡等也不应该是具体的。4 我们把一个不是具体的功能称为抽象的功能&#xff0c;而一个类中如果有抽象的功能&#xff0c;该…

mac删除android sd卡,如何从mac完全删除android及其所有文件?

前一段时间我试图让科尔多瓦工作&#xff0c;但android模拟器永远不会启动。它只是挂着一个黑色的屏幕。如何从mac完全删除android及其所有文件&#xff1f;我原来是用brew install android-sdk安装的。然后我读了一个糟糕的地方。所以我已经删除它并安装了Android Studio。无论…

201521123023《Java程序设计》第13周学习总结

1. 本周学习总结 &#xff08;1&#xff09;网络中为了进行数据交换&#xff08;通信&#xff09;而建立的规则、标准或约定(语义语法规则)称之为协议&#xff08;常用http/ftp&#xff09; &#xff08;2&#xff09;大致熟悉了TCP协议&#xff0c;但是UDP怎么辣么蓝&#xff…

Android中怎获取json,Android应用中如何解析获取的json数据

Android应用中如何解析获取的json数据发布时间&#xff1a;2020-11-24 17:10:08来源&#xff1a;亿速云阅读&#xff1a;107作者&#xff1a;Leah这篇文章将为大家详细讲解有关Android应用中如何解析获取的json数据&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家…

Hibernate4之session核心方法

在学习session的核心方法之前&#xff0c;我们先了解下hibernate中几种对象的状态&#xff1a; 暂时状态&#xff1a;这样的状态就好像咱们公司请的暂时员工一样&#xff0c;他在公司里没有相关的资料和id。 特点&#xff1a;在使用代理主键的情况下, OID 通常为 null 不…

Android 同步锁死锁,Android多线程研究(3)——线程同步和互斥及死锁

为什么会有线程同步的概念呢&#xff1f;为什么要同步&#xff1f;什么是线程同步&#xff1f;先看一段代码&#xff1a;package com.maso.test;public class ThreadTest2 implements Runnable{private TestObj testObj new TestObj();public static void main(String[] args)…

QML与C++交互:登陆界面设计

QML与C交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境&#xff1a; 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前台界面,C后台负责逻辑 效果图: 源码: 前台qml文件 login.qml /******************************************************…

html怎么在字体中加波浪线,CSS3实现文字波浪线效果

前言css的设计之巧妙&#xff0c;实现之精妙&#xff0c;细细寻味&#xff0c;其妙非凡&#xff0c;妙不可言。这波浪线&#xff0c;取巧的运用了linear-gradient属性&#xff0c;合角度、颜色、位置于一体&#xff0c;配合background-size&#xff0c;background-repeat&#…

NET Core 指令启动

ASP.NET Core 是新一代的 ASP.NET&#xff0c;早期称为 ASP.NET vNext&#xff0c;并且在推出初期命名为ASP.NET 5&#xff0c;但随着 .NET Core 的成熟&#xff0c;以及 ASP.NET 5的命名会使得外界将它视为 ASP.NET 的升级版&#xff0c;但它其实是新一代从头开始打造的 ASP.N…

html文本显示状态代码中,HTML文本显示状态代码中,表示?

文本如何大小判别偏心受压剪力墙的。能源能量然资提供的自是指源&#xff0c;显示如(&#xff0c;显示能、能、能、能、、热等的械能是机生物原子光能化学总称&#xff0c;不可能源然界的一可再生能于自源可源和再生分为存在次能。状态中表并发儿麻体温生的婴幼易发间低醉期症(…