问题标签 [mknod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3574 浏览

shell - 尝试使用 shell 制作设备驱动程序文件时出现 mknod 错误

我的代码

我正在练习字符设备驱动程序,这就是其中一个例子。上面的代码应该在/dev/创建一个设备驱动文件,但是有一个错误说

当我尝试创建设备驱动程序文件 ( sh ***.h) 时显示此消息我不知道问题是什么。(insmod已经完成)

0 投票
1 回答
1183 浏览

c - 为什么不使用 fread 读取目录文件?

我正在阅读 Maurice Bach 的 Unix Book 中的一个示例。他编写了一个简单的复制程序,如下所述。但是,当输入文件是目录文件时,它会失败。我确实偶然发现了opendir一些其他这样的 API——我应该使用它吗?

如果二进制文件可以使用它,为什么目录文件被认为不同?在 Unix 中,不是所有的东西都抽象为一个文件,不管它是如何被程序解释的。

另外,我怎样才能扩展这个程序来支持目录文件,然后创建一个 mknod 呢?我想对此进行测试,假设我在/home/user1 其中并执行一个操作$./copy /home/user user-home-clonemknod以查看该目录与主目录有何不同。我猜user-home-clone可能没有对自身的引用,但是/home/user[ 即使它会在 /home/user 中有一个名为 user-home-clone 的文件] 中的所有其他文件,因为当我们进行复制时它不存在命令?

我使用 Centos 6.5 Linux Ext4 文件系统

0 投票
1 回答
1397 浏览

c - 使用 mknod() 创建目录

我需要使用创建一个目录mknod()mkdir()在我的情况下不允许使用),我会从某个目录调用程序并在前一个目录中引入应该在其中创建新目录的路径。

例如:如果我在/home/user/test/里面,我想在里面test创建目录,所以我会传递参数/level1/level2level1/level1/level2/

我有以下代码在创建管道时有效,但是当我将模式更改为 时S_IFDIR,它什么也不做。

0 投票
1 回答
4556 浏览

linux - 不允许 mknod 操作

我对这个 makefile 有问题总是告诉我 mknod 'T0' operation not allowed

我正在 MBP 上运行具有并行功能的虚拟机。

0 投票
3 回答
2131 浏览

linux - 如何编写一个 bash 脚本来获取 /dev/random 的次要和主要设备号

我正在尝试在 chrooted 环境中运行程序,它需要/dev/random作为资源。手动我可以ls -l对其进行操作,然后使用 再次创建文件mknod c xx yy,但我需要使其自动运行,而且我认为这些版本号从一个 linux 版本到另一个版本不是恒定的,所以这就是我有以下问题的原因:

我如何编写一个 bash 脚本来提取 mknod 的次要编号和主要编号/dev/random并将其与 mknod 一起使用?我可以使用ls -l,但我不知道如何提取它的子字符串...

的确切回报ls -l /dev/random是:

我要提取的两个数字是 MINOR 和 MAJOR。但是,如果有一种更简单的方法可以在没有 ls 和 mknod 的情况下创建节点,我将不胜感激。

0 投票
1 回答
685 浏览

linux - mknod() 没有创建命名管道

我正在尝试使用 mknod() 命令创建一个 FIFO 命名管道:

但是该文件不是在我当前的目录中创建的。我试着把它列出来ls -l。状态返回 -1。

我在这里和其他网站上发现了类似的问题,并且我尝试了最建议的解决方案:

但这没有任何区别,错误仍然存​​在。我在这里做错了什么还是有某种系统干预导致了这个问题?

帮助..提前谢谢

0 投票
1 回答
208 浏览

mocking - 是否可以使用 libvirt 在 lxc 容器内运行模拟?

mock用于构建 rpm。我希望在由 libvirt 管理的 lxc 容器中使用它,但是 libvirt 将 lxc 配置为阻止mknod(2)调用,模拟用于构建其 chroot。

有没有办法解决这个问题?

0 投票
1 回答
11032 浏览

python - Python模块'os'没有属性'mknod'

我想在 Python 中创建一个新文件,因为我正在使用mknod命令,但出现错误:

我正在使用 Windows 和其他属性而不是'mknod'正常工作。

0 投票
1 回答
1083 浏览

linux - 使用 --device 标志时,在主机上创建的新设备节点不会反映在 Docker 容器中

我正在运行具有以下选项的容器: docker run -d --device=/dev/bus/usb:/dev/bus/usb --device=/dev/ttyS0:/dev/ttyS0 instr_img

在容器内,我有一个 Python 代码,它重置一个 USB 设备,这反过来会导致主机上的“/dev/bus/usb/002/005”中的一个设备文件被删除和一个新文件(/dev/bus/usb /002/006) 在其位置创建。问题是容器内部“/dev/bus/usb/002/005”仍然存在,而“/dev/bus/usb/002/006”在哪里找不到。主机和容器上的目录“/dev/bus/usb/002”现在不同步。结果,容器内的代码执行会引发异常,因为它无法与 USB 设备通信。我通过在容器中手动创建一个新的设备文件(mknod)来确认它没有同步到主机,反之亦然。这是 Docker 中不受支持的功能还是错误?

我的解决方法是发出一个 mknod 命令来创建一个新的设备文件,每次设备重置发生时,次设备号都会增加 1(从之前的数字开始);但是,这不是一个干净的 hack,因为我需要进行一些检查,因为该程序在 Docker 容器内外的多个环境中使用。对于这个用例,我很可能没有正确使用 Docker,因为我对 Docker 非常熟悉(菜鸟)。一些经验丰富的 Docker 用户的一些评论/见解将不胜感激。如果我找不到解决此问题的干净解决方法,那么将这个程序 dockerize 可能会破坏交易。

提前感谢您的评论!

0 投票
1 回答
647 浏览

c - 客户端服务器实现的命名管道-服务器如何区分来自同一客户端的两个请求

我尝试使用命名管道实现客户端服务器模型。现在,当客户端仅向服务器发送一条消息时,服务器能够识别发送的消息是什么并将其打印出来。现在,如果客户端向同一服务器发送多条消息,则服务器无法区分这些消息并将两个客户端消息一起打印出来,而不是分别打印出两个消息。这是我正在使用的代码:

现在,我知道在服务器端我试图一次读取 80 个字节,这使得它可以一起读取所有字符,但是每当我试图在服务器端一次读取 5 个字节时,它就会进入无限循环。我的概念一定有问题。当我修改服务器端一次读取 5 个字节时,我有一个疑问。它进入无限循环,为什么它在读取客户端发送的所有消息后不阻塞。