mknod 函数用于创建各种类型的文件,包括普通文件、特殊文件以及设备文件。 因为普通文件可以使用 open 或 create 创建,FIFO 文件可以使用 pipe 函数创建,所以 mknod 函数主要用于设备文件的创建。
设备文件与普通文件的区别设备文件是文件系统中代表设备的特殊文件。与普通的文件相比,设备文件在磁盘(或宿主文件系统所的在其它设备)上只占用一个索引节点,而没有任何用于存放数据的记录块与之相联系。当然,这是因为设备文件的目的并不在于存储和读取数据,而只在于为应用程序提供一条通向具体设备的途径,使应用程序可以跟具体设备建立起连接。
普通文件(以及某些特殊文件)可以通过系统调用 open 来创建,只要在调用参数中或上 O_CREAT 标志,就可以让open函数在目标文件不存在时先创建这个文件。当然也可通过调用 creat() 来直接创建文件,事实上 sys_creat() 就是通过 sys_open() 实现的。可是这两个系统调用都不能用来创建设备文件,因为设备文件的创建需要有一个参数来传递设备号,而 open 和 creat 函数都不包括这个参数。此时就是 mknod 函数存在的意义了。
头文件 #include sys/stat.hpath 设备所在目录
mode 指定设备的类型和读写访问标志,可能的类型有:
参数类型 含义 S_IFMT type of file 文件类型掩码 S_IFREG regular 普通文件 S_IFBLK block special 块设备文件 S_IFDIR directory 目录文件 S_IFCHR character special 字符设备文件 S_IFIFO fifo 管道文件 S_IFNAM special named file 特殊文件 S_IFLNK symbolic link 链接文件dev dev 表示设备,由makedev(1, 9) 函数创建,9为主设备号、1为次设备号,如果是普通文件此项直接设置为 0 即可。
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:mknod 函数 https://www.yhzz.com.cn/a/14771.html