mknod创建的命名管道和mkfifo创建的FIFO是否等效?

树正

我已经使用该mkfifo <file>命令创建了命名的FIFO,其中一个进程写入文件,而另一个进程从文件读取。

现在,我知道该mknod命令能够创建命名管道。这些命名管道是否等效于由创建的FIFO mkfifo,或者它们具有不同的功能?

防冻

是的,它是等效的,但显然只有在您告诉mknod您实际创建一个FIFO而不是块或字符设备时才这样做(这些天很少这样做,因为devtmpfs / udev会为您执行此操作)。

mkfifo foobar
# same difference
mknod foobar p

对于strace这两个命令,它是相同的:

mknod("foobar", S_IFIFO|0666)           = 0

因此,就syscall而言,mkfifo实际上是的简写mknod

那么,最大的区别就是语义。这样一来,mkfifo您就可以创建一堆FIFO:

mkfifo a b c

使用mknod,因为您必须指定类型,所以它只能接受一个参数:

# wrong:
$ mknod a b c p
mknod: invalid major device number ‘c’
# right:
mknod a p
mknod b p
mknod c p

通常,mknod可能难以正确使用。因此,如果要使用FIFO,请坚持使用mkfifo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建命名管道错误

来自分类Dev

创建一个命名管道/ FIFO,在读取时执行命令

来自分类Dev

在D中创建命名管道?

来自分类Dev

创建命名管道C ++ Windows

来自分类Dev

在Windows上创建命名管道

来自分类Dev

检查文件是否为C ++中的命名管道(FIFO)

来自分类Dev

尝试编译C文件时出错:mkfifo:无法创建fifo'stderr':不支持的操作

来自分类Dev

如何动态创建多个未命名管道?

来自分类Dev

FIFO / D中的命名管道?

来自分类Dev

Linux-命名管道-模式在mknod中的作用

来自分类Dev

被命名为管道(mkfifo)是RabbitMQ的前身吗?

来自分类Dev

Python从命名管道/ FIFO读取JSON

来自分类Dev

是否可以从闭包创建命名函数?

来自分类Dev

在C程序中创建的Bash中使用命名管道

来自分类Dev

如何创建管道来重命名列?

来自分类Dev

python multiprocessing动态创建的进程和管道

来自分类Dev

命名和未命名管道

来自分类Dev

如何创建以年和月命名的目录

来自分类Dev

覆盖命名路由参数编辑和创建

来自分类Dev

Stata和命名管道

来自分类Dev

命名管道和“ GetNamedPipeHandleState”

来自分类Dev

mkfifo管道,文件描述符和ImageMagick(转换)

来自分类Dev

Microsoft Access是否等效于“创建表#Tablename”?

来自分类Dev

FIFO(命名管道)与常规管道(未命名管道)有何不同?

来自分类Dev

FIFO,管道和Unix域套接字在Linux内核中是否相同?

来自分类Dev

Haskell:创建等效列表

来自分类Dev

c-了解管道/ fifo是否已满

来自分类Dev

在Swift中创建与Objective-C等效的Getter和Setter

来自分类Dev

在GitLab中,是否可以通过管道自动创建问题?