Last Updated: 2023-07-02 14:11:12 Sunday
-- TOC --
mknod命令用于创建设备文件,字符设备,块设备或FIFO。mkfifo专用于创建FIFO,即命名管道。
mknod - make block or character special files
$ sudo mknod /dev/$NAME <c|b|u> major minor
$ sudo mknod /dev/$NAME p
one major one driver
,major一般由驱动动态获取,minor的开始数字,在驱动程序内部自定义。一个major可以对应多个minor,一个driver控制多个devices。
Both MAJOR and MINOR must be specified when TYPE is b, c, or u, and they must be omitted when TYPE is p. If MAJOR or MINOR begins with 0x or 0X, it is interpreted as hexadecimal; otherwise, if it begins with 0, as octal; otherwise, as decimal. TYPE may be:
b
create a block (buffered) special file
c
,u
create a character (unbuffered) special file
p
create a FIFO
驱动major号查询:cat /proc/devices
查看所有设备的major和minor,如下命令,在原本显示文件大小的位置,就是major和minor。
$ ls -l /dev
mknod命令的-m
参数很有用,可以在创建device file的时候,直接设定读写权限!
$ mknod name_pipe p
$ mkfifo name_pipe
此命令专门用来创建命名管道文件,在读写命名管道文件的时候,要注意:
$ mkfifo tp
$ echo '12345678' > tp &
[1] 2893
$ cat tp
12345678
[1]+ Done echo '12345678' > tp
-m
参数用来设置权限。
mknod和mkfifo命令都会在系统中创建特殊的设备文件,因此如果在不使用
-m
指定权限,默认的权限由默认权限与umask命令的值确定。
本文链接:https://cs.pynote.net/sf/linux/shell/202112015/
-- EOF --
-- MORE --