问题标签 [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 回答
1198 浏览

bash - bash 中带有 mkfifo 的 gunzip

我正在尝试对文件进行压缩,然后将结果保存在使用 mkfifo 创建的命名管道中,该管道最终将用于连接命令。我见过很多关于使用 mkfifo 压缩东西的例子,但在这种情况下几乎没有关于 gunzip 的例子。我的问题概述是:

获取两个 *.gz 文件的内容,而无需将它们实际解压缩到磁盘。为此,请捕获 gunzip -c *.gz 的流(这是我想使用命名管道作为保存流内容的文件的地方)。获取两个命名管道并对它们执行连接。Unix代码中的简化想法有点像......

任何建议将不胜感激

0 投票
2 回答
5821 浏览

c - 如何通过C中的命名管道发送文件?

我有两个程序,服务器和客户端。服务器应该读取一个文件,然后通过命名管道将其内容发送到客户端。但是我的服务器只从文件中读取两个字符,然后退出。这段代码有什么问题?

服务器.c:

客户端.c:

0 投票
1 回答
13743 浏览

c - 无法打开 FIFO 进行写入

“服务器”程序端:

该程序打印以下输出:

我对FIFO知之甚少,因为我的教授没有教它。这就是我通过阅读他的例子和讲义所能做到的。我试过没有 O_NONBLOCK 标志,但这只会导致程序挂起,所以它是必需的。我不明白为什么读取 FIFO 很好,但写入 FIFO 无法打开。

0 投票
1 回答
1189 浏览

c - 等到 2 pid 写入 FIFO(命名管道)

我正在尝试使用 FIFO(命名管道)和共享内存与服务器客户端制作井字游戏。

第一步是将客户端进程的pid写入FIFO。在服务器进程中,我需要等到 FIFO 中传递了 2 个 pid(来自 2 个不同的客户端进程)。

现在我只是从管道中读取 2 次,但它不能正常工作。我需要在while循环中阅读吗?

客户端代码:

服务器代码:

我希望服务器等到 2 个客户端正在运行,我应该怎么做?

非常感谢,阿萨夫。

0 投票
1 回答
3525 浏览

c# - 写入 FIFO 文件、Linux 和 Mono(C#)

我想做我在标题中写的。但我只是无法理解它。我也用谷歌搜索了一切。我想将字符串写入由 mkfifo(我认为)创建的特殊类型的 FIFO 文件。如果有任何其他建议如何做到这一点,欢迎您。

0 投票
1 回答
3824 浏览

ruby - 在 Ruby 中创建命名管道

我正在尝试在 Ruby 中创建一个命名管道。除了使用system命令 ( system("mkfifo #{pipe_name}")) 之外,是否有原生 Ruby 函数允许我这样做?

0 投票
2 回答
19940 浏览

python - fifo - reading in a loop

I want to use os.mkfifo for simple communication between programs. I have a problem with reading from the fifo in a loop.

Consider this toy example, where I have a reader and a writer working with the fifo. I want to be able to run the reader in a loop to read everything that enters the fifo.

And the writer:

If I run python reader.py and later python writer.py foo, "foo" will be printed but the fifo will be closed and the reader will exit (or spin inside the while loop). I want reader to stay in the loop, so I can execute the writer many times.

Edit

I use this snippet to handle the issue:

but maybe there is some neater way to handle it, instead of repetitively opening the file...

Related

0 投票
1 回答
14806 浏览

c - 使用 mkfifo 阻止读取直到写入

我正在使用管道 mkfifo。我有一个读者和一个作家。

我希望读者阻止,直到文件中有内容。

您可以设置一个标志 O_NONBLOCK 用于非阻塞模式。所以默认情况下它应该阻止读取。

写入文件

从文件中读取

0 投票
1 回答
418 浏览

python - 如何在 Python 中检测到 fifo 已被删除

在 Python 中,我可以通过以下方式轮询 fifo(使用 Linuxmkfifo命令创建)上的传入数据:

但是read()在没有数据时以及当 fifo 已被删除(通过remove()调用的外部程序)时都返回空字符串。
有没有办法告诉我正在听的fifo不再存在?

0 投票
1 回答
1373 浏览

python - 命名管道竞争条件?

我有两个进程一个 C 和一个 python。C 进程花费时间将数据传递到命名管道,然后 python 进程读取该管道。应该非常简单,并且当我每秒传递一次数据(当前是时间戳,例如“Mon Aug 19 18:30:59 2013”​​)时它工作正常。

当我取出睡眠时出现问题(1);C进程中的命令。当没有一秒钟的延迟时,通信很快就会被搞砸。python 进程将读取多条消息或报告它已读取数据,即使其缓冲区为空。此时C进程通常会发生炸弹。

在我发布任何示例代码之前,我想知道是否需要在双方实现某种同步。就像可能告诉 C 进程不要写入 fifo 如果它不为空?

C 进程以只读方式打开命名管道,python 进程以只读方式打开。

这两个过程都旨在作为循环运行。C 进程不断读取通过 USB 端口传入的数据,python 进程获取每个“消息”并在将其发送到 SQL Db 之前对其进行解析。

如果我要每秒查看多达 50 条消息,命名管道是否能够处理该级别的事务率?每个事务的大小相对较小(20 字节左右),但频率让​​我想知道我是否应该研究其他形式的进程间通信,例如共享内存?

任何建议表示赞赏。如有必要,我可以发布代码,但目前我只是想知道我是否应该以某种方式在两个进程之间同步。

谢谢!