C语言 如何用设备主设备号和次设备号构造mknod参数

vhmi4jdf  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(131)

假设我想创建/dev/cosole。使用mknod命令执行以下操作

mknod -m 666 /dev/console c 5 1

字符串
如果我想在C代码中执行,我必须执行以下操作

#include <sys/stat.h>
static inline void (){
    mknod("/dev/console", 0600, __dev_t __dev);
}


如何创建__dev参数,文档说明
创建一个名为PATH的设备文件,带有权限和特殊位MODE和设备号DEV(可以使用上面的makedev'宏从主设备号和次设备号构造)。 我知道字符设备是S_IFCHR类型。我知道/dev/console有major5和minor1。如何按照文档的建议使用makedev`宏生成__dev参数。如何说明它是块设备还是字符设备?

dw1jzc5e

dw1jzc5e1#

mknod()的第三个参数是使用makedev()宏创建的,它包含主设备号和次设备号。设备的类型-如果是字符或块设备(对于其他文件类型,忽略该参数),包含在第二个参数中,它是与文件类型按位或运算的权限位组合-字符设备为S_IFCHR,块设备为S_IFBLK(它也可以用来创建常规文件,FIFO和unix套接字,但更常见的是使用其他函数创建,如open()creat()mkfifo()bind()等)。所以你会这样做

int status = mknod("/path/to/my/new/console", S_IFCHR | S_IRUSR | S_IWUSR, makedev(5, 1));

字符串

相关问题