问题标签 [fifo]

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 投票
11 回答
9277 浏览

java - 在 Windows 上从 Java 到 C++ 的高效数据传输

我希望将大量数据(高达 ~1 Gbit)从 Java 流式传输到 C++ 应用程序(都在同一台机器上)。我目前在 Linux 上使用 FIFO,但也需要 Windows 解决方案。

最跨平台的方法似乎是本地套接字,但是:a)我不会从 TCP 校验和和从内核空间复制到 & 中获得巨大的开销,并且 b)普通用户的防火墙不会尝试检查和也许阻止连接?

似乎更安全的解决方案可能是使用 JNI 和命名管道 API (\.\pipe\blah),使连接双方的平台特定混乱不堪。

这些真的是我的两个最佳选择吗(人们会推荐哪一个?)谢谢!

0 投票
5 回答
5367 浏览

linux - Linux 内核 /proc FIFO/管道

我目前正在尝试创建一个内核模块,该模块将根据内核事件生成数据并将它们推送到文件中。在读到这很糟糕(我同意)之后,我决定将数据放在 /proc 文件中,用户程序可以在必要时从中提取数据会更有意义。然而,这个想法导致了各种各样的问题,特别是何时以及如何清除这个文件。所以我想......“为什么我不在 /proc 中创建一个命名管道并从中读取呢?”

我已经掌握了为 proc 文件设置读取函数和写入函数的一般要点,但我仍然在如何处理这个问题上遇到概念上的问题。也就是说,我将如何编写这样一个函数来获取任意数据并将其从内核写入这样的管道?有谁知道如何将数据从内核空间推送到命名管道?最后,它不一定/proc 文件(特别是如果我这样做是错误的),但这是我得出的结论。然后我必须弄清楚如何从用户空间程序附加到它,但我觉得这是一个单独的问题。

0 投票
3 回答
7701 浏览

c++ - 阻止通过 ifstream 对象从 FIFO 读取

我打开一个 FIFO 文件为ifstream. 一旦创建了对象,线程就会被阻塞,直到我向 FIFO 发送一些东西(这对我来说没问题)。然后我打电话getline()从流中获取数据。

如何再次读取阻塞线程,直到更多数据写入 FIFO 文件?

谢谢

0 投票
1 回答
40585 浏览

c - 如何在命名管道 (mkfifo) 上执行非阻塞 fopen?

如果我有一个程序使用 mkfifo 创建并尝试打开命名管道,我如何打开管道进行读取或写入而不阻塞?

具体来说,我正在编写一个可以在有或没有 gui(用 Java 编写)的情况下运行的 C 程序。

在 C 程序中,我使用 mkfifo 成功创建了命名管道,但是当我这样做时

在 GUI 打开该管道进行写入之前, fopen 不会返回。我想要做的是让该管道准备好读取一次(如果)GUI决定写入它 - 我将把文件描述符放在 select() 调用中。可以合理地预期 java GUI 可能永远不会真正启动,因此我不能依赖它在任何特定点甚至根本无法打开管道的另一端。

我还将打开第二个管道进行写作,我想我也会遇到同样的问题。此外,我无法在没有阅读器的输出管道上设置 O_NONBLOCK。

有什么建议么?

(这是在linux系统上运行的)

0 投票
1 回答
1889 浏览

ipc - 在 posix 的命名管道上让许多进程写入单个读取器是否会产生影响?

我正在为 POSIX (OSX) 编写一个程序,其中我将有许多进程向一个侦听器发送消息,该侦听器本质上是一个日志记录线程。所有进程都在单独的程序中运行,并且使用许多进程写入但只有一个进程读取的单个命名管道 (FIFO) 非常诱人。

问题:

1)这会工作吗?- 我可以使用 bash 设置一个具有多个写入它的进程的 fifo 来完成这项工作,所以我知道理论上这是可行的。但在实践中,有没有我在掩饰的问题?

外壳 #1

贝壳 #2 和 #3

2)如果每个作者只写相对较短的消息(< 100 字节?),那么我可以假设每个对 write() 的调用都会完整地发送给读者吗?或者,一条消息的一半是否会与来自不同作者的另一条消息的一半存在混淆?

感谢您的任何建议。

0 投票
3 回答
433 浏览

python - 如何调试奇怪的线程打开 fifo 问题?

Web 服务被配置为在接收到 USR1 信号时公开其一些数据。当 xinetd 服务器接收到来自远程客户端的请求时,该信号将由 xinetd 服务器发送,例如 nc myserver 50666。当 web 服务器收到 USR1 信号时,它会打开一个专用的 fifo 管道,将其数据写入管道,然后关闭管道。与此同时,xinetd 服务器读取管道并提供给远程客户端。

在大多数情况下,它们工作得很好,但偶尔,出于某种原因,客户端会收到重复记录。从日志来看,管道似乎没有正确关闭并且缓存是剩余的,所以下次它服务时,以前的和当前的都被发送到客户端。问题是它在尝试复制时不会经常发生,不幸的是,我无法复制一次。

以下是演示该过程的简单片段:

网络服务器:(webserver.py)

xinetd.d 服务器:(spitter.py)

那么究竟是什么导致了 dup 呢?如何触发它?当前修复我取消链接管道文件并每次重新创建它以避免任何剩余但我不知道这是否是一个正确的解决方案。

0 投票
3 回答
1445 浏览

c# - C#中带有winform的FIFO

我对线程中的 GUI 问题感到恼火。我如何创建一个 FIFO,以便我的主窗体/线程将接收数据来做事,而不是让我的线程使用回调并自己运行代码(并失败)?

有问题的gui问题-> SelectedNode = .Nodes [0]上的线程异常

0 投票
5 回答
1642 浏览

data-structures - 固定大小的 FIFO 队列的正确术语是什么?

以下数据结构的正确名称是什么?这是:

  • 固定大小的队列
  • 新元素被添加到开头
  • 每当队列超过一定大小时,就会从末尾删除一些元素
0 投票
3 回答
14539 浏览

linux - 在 linux 中:写入 FIFO

mkfifo我使用该命令创建了一个新的 FIFO 。我有一个文本文件f.txt。我想将文本文件写入我的 FIFO。如何?有没有一个unix命令呢?

0 投票
5 回答
8101 浏览

linux - 无法写入通过 NFS 调出的 FIFO 文件

我正在尝试写入位于 NFS 挂载上的 FIFO 文件,但它会阻塞。可能是什么问题呢?

我的 /etc/export:

NFS 服务器和客户端上的 ls /tmp/test 是一样的

我正在以root身份写作

谢谢。