mknod详解

Linux中mknod命令实现原理以及源码分析 本篇文章以mknod创建字符设备文件进行讲解 字符设备驱动的Demo例子可参考该篇文章 Linux 编写简单驱动并测试 1. mknod 命令 mknod /dev/hello c 520 0 该命令主要通过制定要创建的设备文件名称/dev/hello,以及设备类型c字符设备,最后的520 0 表示为主设备号和次设备号。 当我们使用该命令创建好了/dev/hello设备文件,当我们在用户态对该文件进行open()、write()、read()时,就会调用到/dev/hello设备文件对应的设备驱动的fil 阅读详情

mknod
  用途
  创建特殊文件。
  语法
  只能由 root 用户或系统组成员运行
  mknod Name { b | c } Major Minor
  创建 FIFO(已命名的管道)
  mknod Name { p }
  描述
  mknod 命令建立一个目录项和一个特殊文件的对应索引节点。第一个参数是 Name 项设备的名称。选择一个描述性的设备名称。mknod 命令有两种形式,它们有不同的标志。
  mknod 命令的第一种形式只能由 root 用户或系统组成员执行。在第一种形式中,使用了b 或 c 标志。b 标志表示这个特殊文件是面向块的设备(磁盘、软盘或磁带)。c 标志表示这个特殊文件是面向字符的设备(其他设备)。
  第一种形式的最后两个参数是指定主设备的数目,它帮助 操作系统查找设备驱动程序代码,和指定次设备的数目,也就是单元驱动器或行号,它们是十进制或八进制的。一个设备的主要和次要编号由该设备的配置方法分配,它们保存在 ODM 中的 CuDvDr 类里。在这个对象类中定义了主要和次要编号以确保整个系统设备定义的一致性,这是很重要的。
  在 mknod 命令的第二种形式中,使用了 p 标志来创建 FIFO(已命名的管道)。 标志  
b表示特殊文件是面向块的设备(磁盘、软盘或磁带)。
c表示特殊文件是面向字符的设备(其他设备)。
p创建 FIFO(已命名的管道)。
------------------------------------------------------------------------
  c.创建虚拟设备(dev),日志记录的时候有的选项可能用到它们。在默认情况下,是使用/dev目录下的文件,但是由于我们需要把DNS限制到一个目录,所以必须完全把/dev下用到的文件(或者说设备)模拟过来才可以。
  ls -lL /dev/zero /dev/null /dev/random
  看到类似
  crw-rw-rw- 1 root root 1, 3 2003-09-15 /dev/null
  crw-r--r-- 1 root root 1, 8 2003-09-15 /dev/random
  crw-rw-rw- 1 root root 1, 5 2003-09-15 /dev/zero
  这样的,将其中的1,3这样的数字记录下来,这表示主设备号和次设备号(一般来说主设备号用来区分设备的种类;次设备号则是为了作唯一性区分,标明不同属性——注意,在unix系统中是把设备也当作文件来对待的),在redhat 9下,ls加不加-L参数都无所谓,但是在Solaris下则一定要加上才可以显示。
  mknod dev/null c 1 3
  mknod dev/zero c 1 5
  mknod dev/random c 1 8
  ============================================================================
  mknod [options] name {bc} major minor
  mknod [options] name p
  GNU 选项(缩写):
  [-m mode] [--help] [--version] [--]
  描述
  mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。
  文件系统中的一个专用文件存贮着三种信息( 布朗型、整型、整型)。布朗型在字符文件与块文件之间作出选择,两个整型是主、次设备号。
  通常,一个专用文件并不在磁盘上占用空间,仅仅是为操作系统提供交流,而不是为数据存贮服务。一般地,专用文件会指向一个硬件设备(如:磁盘、磁带、打印机、 虚拟控制台)或者操作系统提供的服务(如:/dev/null, /dev/random)。
  块文件通常类似于磁盘设备(在数据可以被访问的地方赋予一个块号,意味着同时设定了一个块缓存)。所有其他设备都是字符文件。(以前,两种文件类型间是有差别的。比如:字符文件I/O没有缓存,而块文件则有。)
  mknod命令就是用来产生这种类型文件的。
  以下参数指定了所产生文件的类型:
  p
  FIFO型
  b
  块文件
  c
  字符文件
  GNU版本还允许使用u('unbufferd'非缓冲化),以保持与C语言的一致。
  当创建一个块文件或字符文件时,主、次设备号必须在文件类型参数后给出。(十进制或八进制以0开头;GNU 版本还允许使用以0x开头的十六进制)缺省地,所产生的文件模式为0666('a+rw')。
  选项
  -m mode, --mode=mode
  为新建立的文件设定模式,就象应用命令chmod一样,以后仍然使用缺省模式建立新目录。
  GNU 标准选项
  --help
  在标准输出上显示使用信息并顺利退出。
  --version
  在标准输出上显示版本信息并顺利退出
  --
  终端选项列表。
   mknod命令详解
  mknod [options] name {bc} major minor
  mknod [options] name p
  GNU 选项(缩写):
  [-m mode] [--help] [--version] [--]
  描述
  mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。
  文件系统中的一个专用文件存贮着三种信息(布尔型、整型、整型)。布尔型在字符文件和块文件之间作出选择,两个整型是主、次设备号。
  通常,一个专用文件并不在磁盘上占用空间,仅仅是为操作系统提供交流,而不是为数据存贮服务。一般地,专用文件会指向一个硬件设备(如:磁盘、磁带、打印机、虚拟控制台)或操作系统提供的服务(如:/dev/null, /dev/random)。
  块文件通常类似于磁盘设备(在数据能够被访问的地方赋予一个块号,意味着同时设定了一个块缓存)。任何其他设备都是字符文件。(以前,两种文档类型间是有差别的。比如:字符文档I/O没有缓存,而块文档则有。)
  mknod命令就是用来产生这种类型文件的。
  以下参数指定了所产生文件的类型:
  b create a block (buffered) special file
  c, u create a character (unbuffered) special file
  p create a FIFO
  GNU版本还允许使用u('unbufferd'非缓冲化),以保持和C语言的一致。
  当创建一个块文件或字符文件时,主、次设备号必须在文件类型参数后给出。但当指定一个p(FIFO)类型时,主次设备号必须省略。(设备号默认是以十进制表示;八进制以0开头;GNU 版本还允许使用以0x开头的十六进制)
  选项
  -m mode, --mode=mode
  为新建立的文档设定模式,就象应用命令chmod相同,以后仍然使用缺省模式建立新目录。 缺省地,所产生的文档模式为0666('a+rw')
  GNU 标准选项
  --help
  在标准输出上显示使用信息并顺利退出。
  --version
  在标准输出上显示版本信息并顺利退出
  主、次设备号可在内核 源代码的./Documentation/devices.txt里查到,mknod 可为这些指定的设备创建节点,当然节点的位置不是一定要在/dev下,但是为了便于管理一般都是指定/dev。驱动程序是根据主、次设备号定位的,但是你的 应用程序open一个设备时,一定要是你指定的节点位置。例如:
  mknod /dev/input/mouse0 c 13 32
  也可以
  mknod /tmp/mymouse c 13 32
  /**********************************************************************************************************************/
  下面是某个网友利用mknod成功解决找不到swap分区的问题。
  开了一个大程序,用free看看内存是用,却显示如下
  linuxman:~ # free
  total used free shared buffers cached
  Mem: 248380 243800 4580 0 2928 53344
  -/+ buffers/cache: 187528 60852
  Swap: 0 0 0
  怪了,swap怎么是零? 用#swapon -a,却说是没有这个文件/dev/hda7!
  关于swap,我的fstab文件中有一行是这样的:
  /dev/hda7 swap swap pri=42 0 0
  于是:#ls /dev/hda*,果然没有hda7这个block设备!那就创建一个!
  我就用#mknod /dev/hda7 b 3 7,再chmod 和 chgrp 一下就可以了!
  这样#ls /dev/hda7就显示这样了:
  brw-rw---- 1 root disk 3, 7 2005-04-12 07:00 /dev/hda7
  然后再#swapon -a就可以了;#free显示
  total used free shared buffers cached
  Mem: 248380 242368 6012 0 5596 55304
  -/+ buffers/cache: 181468 66912
  Swap: 334616 0 334616

深入解析APS开源排程工具OptaPlanner:链式结构与移动优化 本文深入解析了开源APS排程工具OptaPlanner的核心机制,重点阐述了链式结构如何作为排程优化的“骨架”,通过单一`previous`变量隐式定义资源与顺序,从而简化建模。文章详细介绍了基于此结构的移动操作(如`ChainChangeMove`)如何驱动优化引擎探索解空间,并自动触发影子变量更新与分数计算,为构建高效、灵活的生产计划系统提供了实践指导。 阅读详情

相关推荐

【图形学】后处理下的HDR、颜色分级、颜色映射与颜色空间

目录 一、Color Grading 1.1概念 1.2 内置在Unity/UE4 二、HDR、LDR与VDR 2.1 LDR 2.2 HDR 2.3 VDR 三、Tone Mapping 3.1 概念 3.2 算法发展史 3.3 ACES算法 四、常见的颜色空间标准 参考 一、Color Grading 1.1概念 Color Grading(颜色分级、颜色校正)俗称调色,是游戏后期处理中最常见也是必要的一个环节。它能够改变或矫正最终图像的颜色和亮度,你可以把它想象...

ColorGalaxy 8420

linux mknod命令解析

      个人觉得linux的软件设计思想异常强大,比如把所有的设备都当做文件来处理,大大简化了程序员的负担,向提出这个思想的大神s致敬!!先来看看linux系统中设备管理的基本知识:      我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样easy。linux为不同种...

weixin_34015860的博客 1681

simulink求解器选择的小tip

给出了simulink选择求解器的一种tip,与积分初值有关。

高能阿博特的博客 2057

Linux mknod命令

Linux mknod命令:创建块设备和字符设备文件。

mayue_web的博客 1286

TL494充电器原理与维修 (转)

TL494充电器原理与维修 电动自行车充电器多采用开关 电源,型号虽多,但电路结构大同小异,主要区别在于所选的脉宽调制(PWM)芯片不同如(UC3845、UC3842、SG3524、TL494)。现以佳腾牌 充电器为例,介绍其原理和故障检修方法。 一、电路原理 根据实物测绘的佳腾牌充电器电路原理如图1所示。整机可分为PWM产生和推动电路、功 率开关变换电路、...

weixin_30500663的博客 1815

element的el-cascader组件动态加载,以及报错处理问题

Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. 报错处理

weixin_56527169的博客 1264

mknod命令:创建设备文件

可以通过man 1 mknod查看mknod命令的内容。

主要记录嵌入式学习与开发过程。 3501

AI漫剧制作全流程零基础实操指南:从剧本到剪辑

AI漫剧是一种利用AI工具将剧本、分镜、出图、配音、剪辑整合为流水线的短视频内容形式。其技术原理基于文生图、图生图与文本转语音模型的组合,核心挑战在于角色一致性控制与分镜批量出图。这项技术大幅降低了视频制作门槛,使个人创作者无需演员和设备即可产出剧情向短内容,广泛应用于短视频平台的情景剧、玄幻、甜宠等题材。本文给出了一套零基础可照做的全流程实操方案,覆盖剧本提示词、分镜表、出图选型、配音合成与剪辑模板,帮助你快速跑通AI漫剧制作链路。

weixin_29048309的博客 536

mknod 命令

mknod 命令   2009-09-06 17:56:32|  分类: linux指令 |字号 订阅 Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录 下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每 个设备号又分为主设备号和次设备

jeffreyst的专栏 1349

基于Simulink的加速度计振动分析:单自由度质量-弹簧-阻尼系统

摘要:基于Simulink的加速度计单自由度振动分析 本文研究了加速度计的单自由度(SDOF)质量-弹簧-阻尼系统模型,通过MATLAB/Simulink平台建立了完整的振动分析仿真系统。文章详细阐述了理论建模过程,推导了系统运动微分方程和传递函数,并提供了Simulink模型搭建的具体步骤和MATLAB实现代码。研究通过正弦扫频、随机振动和冲击响应三种典型输入信号,分析了系统的幅频特性、相频特性及时域响应,验证了加速度计的工作机理。仿真结果表明,该方法能有效模拟加速度计在不同激励条件下的动态特性,为传感器

AI的内部世界的博客 163

1 初识智能化测试

非常感谢您可以和我一起来聊一聊智能化测试的一些事。智能化测试是一个新鲜又老旧的问题,说新鲜是因为很多人当听到智能化测试都会联想到人工智能、机器学习、深度学习等高大上的技术,很多时候觉得离我们的实际工作还很远;说老旧,是因为智能化测试的一些技术的发展在行业里面已经很久了,例如符号执行、静态分析等技术已经有很长的历史了。近些年,随着测试技术的的飞速发展,智能化测试也有了越来越多的实践,优秀的开源项目慢慢的被行业推行并且落地。那么在这里我们就一起来聊聊智能化测试以及智能化测试好的思路、实践、方法以及技术落地过程。

Criss@陈磊 2626

Linux之mknod指令详解

转载:https://blog.youkuaiyun.com/liangkaiming/article/details/6234675 mknod - make block or character special files mknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 -m 了 name自定义 type有...

xiao小青年 3674

功能安全Safety Case构建方法论

本文系统阐述了功能安全认证中SafetyCase的构建方法。SafetyCase是一套结构化论证体系,通过Claim-Argument-Evidence(CAE)逻辑链证明系统安全性,包含系统级、技术安全级和实现级三层论证。文章详细介绍了SafetyCase的核心框架、与FMEDA等验证方法的关系、工程化实施步骤,以及常见失效模式。特别强调SafetyCase连接理论、实现与证据的桥梁作用,是功能安全认证的灵魂文件,要求将分散的安全活动组织成完整的逻辑论证。

VehSwHwDeveloper的博客 578

mknod 详解

网上找了很多关于mknod的文章,但每一篇都有点不足,故我在这里整合了一篇如下: 下文转自:http://fengjixuchui.blog.51cto.com/854545/462275     创建特殊文件。    mknod [options] name {b|c} major minor   创建 FIFO(已命名的管道)   mknod [options] name {

zhaowenchaofang的专栏 3178

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

mknod指令详解

mknod - make block or character special files mknod [OPTION]... NAME TYPE [MAJOR MINOR]     option 有用的就是 -m 了     name   自定义     type   有 b 和 c 还有 p     主设备号     次设备号 主设备号是由linux/major.h定义的,如

软件工程 1405

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Linux mknod命令详解

Linux一切皆文件,系统与设备通信之前,要建立一个存放在/dev目录下的设备文件,默认情况下就已经生成了很多设备文件,有时候自己手动新建一些设备文件,这就会用到mknod。 语法格式:mknod[选项][文件名称] [文件类型] [主设备号] [次设备号] 常用参数:   -Z 设置安全的上下文   -m 设置权限模式   b 块设备   c 字符设备   -help 显示帮助信息   --ve...

嵌入式与Linux那些事的博客 3581

Linux系统之mknod 命令详解

mknod(make node)用于创建特殊文件,包括块设备文件、字符设备文件和FIFO(命名管道)。特殊文件是Linux系统中与硬件设备(如硬盘、终端)或进程间通信相关的文件,通过主设备号和次设备号标识设备类型及具体实例(FIFO除外)。

weixin_56303229的博客 1385

Linux下mknod详解

mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 -m 了 name 自定义 type 有 b 和 c 还有 p 主设备号 次设备号 主设备号是由/usr/src/linux/include/linu...

132

mknod命令详解

<br />mknod [options] name {bc} major minor <br />mknod [options] name p <br />GNU 选项(缩写): <br />[-m mode] [--help] [--version] [--] <br />描述 <br />mknod 用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。 <br />文件系统中的一个专用文件存贮着三种信息(布尔型、整型、整型)。布尔型在字符文件和块文件之间作出选择,两个整型是主、次设备号。 <

yinwei520的专栏 8771

Linux系统mknod详解

简介 mknod用于创建一个指定文件名的文件系统节点,把所有的设备都当做文件来处理 语法格式 mknod[选项][文件名称] [文件类型] [主设备号] [次设备号] 参数详解 参数 详解 -Z 设置安全的上下文 -m 设置权限模式 b 块设备,块设备中读取数据的时候,直接从内存的buffer中读取数据,而不经过磁盘 c 表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如打印机、终端都是以字符的形式传送数据 设备号 为了管理设备,系统为每个设备

Luckiers的博客 2009
上一篇: argc 和 argv 详解
下一篇: insmod详解
青竹玉简
博客等级 码龄14年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值