我希望能够直接写入角色设备。这是我的所作所为:
cd /dev
mknod moo c 0 0
echo hello >> moo
我得到了
bash: moo: Permission denied
我尝试使用chmod为拥有用户提供写访问权限,如下所示:
chmod 777 moo
然后,当我尝试写信时,我被告知设备或地址不存在。我否则告诉我。
另外值得注意的是,据我所知,给0 0作为主要次要数字对会导致Linux只为设备提供方便的东西。
我必须遗漏一些基本的东西,我认为设备节点可以被视为普通文件。谁能告诉我我做错了什么?理想情况下,我想创建一个所有者可以写入的字符设备节点,任何人都可以读取(我知道777是错误的权限,我将在最终版本中修复)。
我也(最初)尝试通过Python与它交谈,这给了我同样的问题。
编辑:
0 0是错误的做法。我读过一件告诉我它会起作用的东西,它撒了谎。我需要做的是使字符设备模块和节点匹配,然后使用
答案 0 :(得分:2)
所有设备都在驱动程序中定义了特定的主要和次要编号。您无法将其设置为您想要的任何内容,0 0
看起来非常无效。你必须提出有效的,然后你才能成功。
主要和次要数字将节点条目绑定到特定驱动程序。不,/dev/*
文件与其他文件不同。它们很特殊,因为内核会将输入/输出/控制操作重定向到特定的驱动程序。
答案 1 :(得分:2)
您确定0 0主要/次要设备标识符吗?
我称之为驱动程序,是内核看到的驱动程序。
您在示例中尝试做的是创建一个没有任何驱动程序的设备...它将无法工作(正如您已经体验过的那样;)。)
为什么需要角色设备?根据您的需要(一位作者,多位读者),您可以使用带有mkfifo甚至标准文件的命名管道;)