问题标签 [mkfifo]

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 回答
591 浏览

java - 进程间通信FIFO java

嗨,我正在尝试使用 FIFO 在 Java 中实现 IPC 我用 FIFO 创建了一个 FIFO

然后我尝试打开和 FileWriter

但它阻塞在这条线上。

知道问题可能是什么吗?

0 投票
1 回答
957 浏览

c - 并非所有写入 FIFO 的消息都在读取时收到

在 linux 下使用 C 中的 fifo 文件时,我遇到了一个奇怪的问题。

让我们从代码开始:

现在有一些关于我想要代码做什么的细节。

运行这样的程序后:

我想在终端:

但不是这个,我只得到这个:

问题是:我想向 FIFO 写入几条消息,然后通过读取 FIFO,它打算接收存储在其中的整个文本。但不幸的是,只有最后一条消息存储/写入标准输出(在本例中为终端),就像执行的唯一命令是:

我试图删除这一行:

因为我想,如果 FIFO 文件已经存在,这一行可以创建并覆盖现有的 FIFO 文件。但这并没有改变什么。

那么我必须做些什么才能使其按预期工作?

0 投票
1 回答
1019 浏览

c - 在 fifo 中同时读取和写入(在后面)

我正在尝试通过 fifo 将 file1 的内容复制到其他 file2 中。我想在fifo中写回前四个字符(在读取期间,而不是在将内容从file1写入fifo时更早),然后也将其复制到file2中。但是前四个字符不会附加在后面,而是随机插入到中间。我的代码是

现在,如果在终端上,我运行

$ ./a.out a.txt b.txt

我想从 a.txt 复制到 b.txt,b.txt 包含 a.txt 加上在字符之间随机插入的前 4 个字符。

0 投票
6 回答
2505 浏览

java - 在 Java 中设置阻塞文件读取

我想设置一个用 Java 读取的阻塞文件。也就是说,有一个文件,当被调用FileInputStream任何read()方法时,调用会阻塞。

我想不出一种简单的独立于操作系统的方式——在类 Unix 操作系统上,我可以尝试使用mkfifo该文件创建一个 FIFO 并从中读取。一种可能的解决方法是创建一个非常大的文件并从中读取 - 在我捕获堆栈之前读取不太可能完成,但它丑陋且缓慢(实际上,缓存时读取仍然可以非常快)。

相应的套接字read()情况很容易设置 - 自己创建一个套接字并从中读取,您可以进行确定性阻塞。

目的是检查方法的堆栈以确定在这种情况下的顶部帧是什么。想象一下,我有一个组件,它定期对所有正在运行的线程的堆栈跟踪进行采样,然后尝试对该线程目前正在做什么进行分类。它可以做的一件事是文件 IO。所以我需要知道文件 IO 期间的“栈顶”是什么样的。我已经通过实验确定了这一点(只需以各种方式读取文件并对堆栈进行采样),但我想编写一个测试,如果这种情况发生变化,它将失败。

编写此类测试的自然方法是启动一个执行文件读取的线程,然后检查顶部帧。为了可靠地做到这一点,我想要一个阻塞读取(否则线程可能会在获取堆栈跟踪之前完成它的读取,等等)。

0 投票
1 回答
529 浏览

c - 从 mkfifo 中的超级用户进程授予权限

我需要使用mkfifo()超级用户进程创建一个管道,该管道必须可以从一个非超级用户的进程写入。

读者:

作家:

我打电话给./writersudo ./reader

当我的作家尝试在返回分段错误的管道中写入时。如果我查看/tmp/myfifo我发现权限prwxr-xr-x,但我想要prw-rw-rw-

0 投票
1 回答
733 浏览

fifo - 不使用 mkfifo 或 mknod 制作 fifo 文件

我试图使用 vlc 和 mpg123 播放器通过 gnuradio 流式传输 mp3 音乐。按照本网站的示例 http://www.opendigitalradio.org/Simple_FM_transmitter_using_gnuradio

命令是:

使用我自己的 mp3 流,我按照示例进行操作,但是有一次我忘记放

到终端,而不是只输入

直接到终端。结果是一个未突出显示的 .fifo 文件(如使用 mkfifo 创建的文件)

当与 gnuradio 一起使用时,使用 mkfifo 制作的 fifo 文件只能播放一次,并且它的大小总是会回到 0 字节。

虽然我在不使用 mkfifo 的情况下意外创建的那个将字节保留了很长时间,而且我可以随时访问它,这对我来说更有益。

以这种方式制作fifos有缺点吗?也有人可以告诉我我实际上做了什么吗?

太感谢了!

0 投票
1 回答
57 浏览

c - Loop 无法继续循环

每次写入特定的 FIFO 时,我都在编写一些代码来创建一个新文件夹:

}

但是,当运行时会发生这种情况:

我做错了什么?为什么它不继续循环并等待更多输入?FIFO是为读写而打开的,这样写停止时它就不会关闭,是不是不能正常工作?

0 投票
2 回答
371 浏览

unix - FIFO 是否保留消息边界?

我们知道 TCP 不会保留消息边界,但 UDP 会。但是管道和 FIFO 是什么情况呢?例如,假设我们在同一主机上有一个服务器和两个客户端,服务器使用一个众所周知的路径名创建一个 FIFO,并打开这个 FIFO 进行读取。客户端 1 和客户端 2 都打开此 FIFO 进行写入。并发生以下事件:

  1. 客户端 1 将 100 个字节写入 FIFO。
  2. 客户端 2 将 100 个字节写入 FIFO。
  3. 服务器使用足够大的缓冲区读取此 FIFO,例如:

    char buf[1024]; read(fifofd, buf, sizeof(buf));

我的问题是:第 3 步将返回多少数据?它只是返回客户端 1 发送的前 100 个字节,所以我们不必担心消息边界吗?或者它是否返回所有 200 个字节,所以我们必须将来自客户端 1 的消息和来自客户端 2 的消息分开?

0 投票
2 回答
510 浏览

tcl - TCL中的FIFO文件

我需要在命名管道中解压缩文件返回它:

它挂在 exec gunzip -c $fileName > $tmpFileName &

0 投票
2 回答
2407 浏览

linux - 在 Bash 中带有 fifo 队列的 inotifywait

我写了一个小的 Bash 脚本,它使用 inotify-tools 和 inotify 接口。我的问题是,这个函数中的一个命令可以阻止执行,直到它完成。这样功能就会卡住。

为了解决这个问题,我想将检测到的文件排队(通过关闭事件),并从另一个函数中读取队列。有人知道如何在 Bash 中执行此操作吗?

下面的变量是用于查找目录或分配文件名的简单字符串。

我正在将文件复制到 SAN 卷,该卷有时会出现响应时间变化。这就是为什么这个功能会卡住一段时间的原因。我用 Rsync 替换了 cp 因为我需要吞吐量统计信息。Cp(来自 coreutils)显然没有这样做。