linux mknod命令解析

http://www.cnblogs.com/cobbliu/archive/2011/07/05/2389014.html

mknod:make node  生成设备节点/文件

     mknod [OPTION]... NAME TYPE [MAJOR MINOR]

DESCRIPTION
options 选项
Create the special file NAME of the given TYPE. Mandatory arguments to long options are mandatory for short options too. -m, --mode=MODE 设置设备文件的文件权限
set file permission bits to MODE, not a=rw - umask -Z, --context=CTX 设置selinux的安全上下文
set the SELinux security context of NAME to CTX --help display this help and exit --version TYPE 类型
b create a block (buffered) special file
c, u create a character (unbuffered) special file
p create a FIFO

主、次设备号可以在内核源代码的./Documenttation/devices.txt里查到。当然节点的位置不一定要在/dev下,但是为了方便管理一般都是指定/dev

Linux就这个范儿P552

个人觉得linux的软件设计思想异常强大,比如把所有的设备都当做文件来处理,大大简化了程序员的负担,向提出这个思想的大神s致敬!!

先来看看linux系统中设备管理的基本知识:

我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样easy。linux为不同种类的设备文件提供了相同的接口,比如read(),write(),open(),close()。

所以在系统与设备通信之前,系统首先要建立一个设备文件,这个设备文件存放在/dev目录下。其实系统默认情况下就已经生成了很多设备文件,但有时候我们需要自己手动新建一些设备文件,这个时候就会用到像mkdir, mknod这样的命令。

mknod 的标准形式为:

mknod DEVNAME {b | c} MAJOR MINOR

1,DEVNAME是要创建的设备文件名,如果想将设备文件放在一个特定的文件夹下,就需要先用mkdir在dev目录下新建一个目录;

2, b和c 分别表示块设备和字符设备:

b表示系统从块设备中读取数据的时候,直接从内存的buffer中读取数据,而不经过磁盘;

c表示字符设备文件与设备传送数据的时候是以字符的形式传送,一次传送一个字符,比如打印机、终端都是以字符的形式传送数据;

3,MAJOR和MINOR分别表示主设备号和次设备号:

为了管理设备,系统为每个设备分配一个编号,一个设备号由主设备号和次设备号组成。主设备号标示某一种类的设备,次设备号用来区分同一类型的设备。linux操作系统中为设备文件编号分配了32位无符号整数,其中前12位是主设备号,后20位为次设备号,所以在向系统申请设备文件时主设备号不好超过4095,次设备号不好超过2^20 -1。

.

下面,我们就可以用mknod命令来申请设备文件了。

mkdir -p /dev/cobing

mknod /dev/cobing/mydev1 c  
在/dev目录下生成console和null这两个重要设备文件   Linux就这个范儿 P611
cd /dev
mknod -m /mnt/m13/dev/console c
mknod -m /mnt/m13/dev/console c

最新文章

  1. [LeetCode] Trapping Rain Water 收集雨水
  2. 配置springMVC之后,引入js,css等资源处理
  3. ORM框架详解
  4. File存储 - 文件存储
  5. POSIX线程
  6. SU Demos-02Filtering-02Subfilt
  7. oracle utf8字符集转gbk(转)
  8. lintcode:装最多水的容器
  9. Jsop入门程序
  10. 还是log4net的使用
  11. PHP 面向对象:设计模式之单例模式
  12. 用HTML5和原生js实现放大局部图片
  13. 【重要】ionic和Angular的安装步骤
  14. centos6 网卡配置,多IP设置
  15. Django对于模型的数据操作
  16. majingwei 利用xml导出word文件---换行
  17. python--面向过程编程与面向对象编程
  18. css 子盒子上下居中 文字溢出省略号
  19. 忘记mysql密码时对密码进行更改
  20. java实体转json忽略属性

热门文章

  1. PHP wget 增强脱裤脚本(PDO MYSQL)
  2. java工程包的命名(-dev.jar,-javadoc.jar,jar)
  3. 【iCore2模块】VGA模块样板谍照!
  4. hibernate将本地SQL查询结果封装成对象
  5. hdu 1116 并查集和欧拉路径
  6. 浏览器User-agent String里的历史故事
  7. PHP不仅仅是PHP
  8. java MVC架构-spring mvc,struct2(理解)
  9. Bigtable: A Distributed Storage System for Structured Data
  10. processor, memory, I/O