问题标签 [pipe]

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 投票
6 回答
31835 浏览

c - 在 C 中使用 fork()、pipe()、dup2() 和 exec() 时遇到问题

这是我的代码:

(代码已更新以反映他下面两个答案提出的更改,它仍然无法正常工作......)

这是失败的测试用例:

问题是我应该在那之后返回我的shell,我应该看到“Shell>”等待更多输入。您还可以注意到,您没有看到类似于“[4804] TERMINATED (Status: 0)”(但 pid 不同)的消息,这意味着第二个进程没有终止。

我认为它与 grep 有关,因为它有效:

您可以轻松地看到两个“终止”消息...

那么,我的代码有什么问题?

0 投票
2 回答
6538 浏览

python - FIFO(命名管道)消息传递障碍

我计划使用 Unix 命名管道 (mkfifo) 进行简单的多进程消息传递。一条消息将只是一行文本。

你会劝阻我吗?我应该期待什么障碍?

我注意到了这些限制:

  1. 在收到消息之前,发件人无法继续。
  2. 接收器被阻塞,直到有一些数据。当我们需要停止读取时,将需要非阻塞 IO。例如,另一个线程可能会要求这样做。
  3. 接收者可以在一次读取中获得许多消息。这些必须在退出前处理。
  4. 原子消息的最大长度限制为 4096 字节。这是 Linux 上的 PIPE_BUF 限制(参见 man 7 pipe)。

我将在 Python 中实现消息传递。但障碍普遍存在。

0 投票
9 回答
6861 浏览

bash - ">/dev/null 2>&1" 是否有命令行快捷方式

每当我不想看到程序的输出时,输入这个真的很烦人。我很想知道是否有更短的写法:

通用 shell 是最好的,但其他 shell 也会很有趣,尤其是 bash 或 dash。

0 投票
5 回答
10018 浏览

c - C 中的这种多管道代码有意义吗?

几天来我已经提出了一个关于这个的问题。我的解决方案与已接受答案中建议的内容一致。但是,我的一个朋友提出了以下解决方案:

请注意,代码已经更新了几次(检查编辑修订)以反映以下答案中的建议。如果你打算给出一个新的答案,请记住这个新代码,而不是有很多问题的旧代码。

这会通过 bash 中的管道模拟一系列命令,例如: cmd1 | 命令2 | ... | cmd_n。我说“模拟”,因为如您所见,命令实际上是从参数中读取的。只是为了节省时间编写一个简单的 shell 提示符......

当然,还有一些问题需要修复和添加,比如错误处理,但这不是重点。我想我有点得到代码,但它仍然让我很困惑这整个事情是如何工作的。

我是否遗漏了某些东西,或者这确实有效,并且它是解决问题的好而干净的解决方案?如果没有,谁能指出这段代码存在的关键问题?

0 投票
1 回答
5448 浏览

java - 从 Apache Commons-Exec 捕获大量输出

我正在通过执行ffmpeg并将其输出捕获到标准输出来用 Java 编写视频应用程序。我决定使用 Apache Commons-Exec 而不是 Java Runtime,因为它看起来更好。但是,我很难捕获所有输出。

我认为使用管道将是可行的方法,因为它是进程间通信的标准方式。但是,我使用PipedInputStreamand的设置PipedOutputStream是错误的。它似乎有效,但仅适用于流的前 1042 个字节,奇怪的是恰好是PipedInputStream.PIPE_SIZE.

我不喜欢使用管道,但我想避免使用磁盘 I/O(如果可能的话),因为速度和数据量(512x384 分辨率的 1m 20s 视频会产生 690M个管道数据)。

关于处理来自管道的大量数据的最佳解决方案的想法?我的两个课程的代码如下。(是的,sleep很糟糕。对此有什么想法? wait()notifyAll()?)

WriteFrames.java

YUV4MPEGPipeParser.java

0 投票
3 回答
254 浏览

pipe - 为什么管道中存在不对称行为

为什么当没有作者时读者可以存在,但当管道中没有读者时,作者不能存在?

. 是不是因为读取器是要等待的,所以如果没有写入器也没关系,而写入器已准备好数据,即使它已准备好数据,也不知道它必须等待多长时间。

. 是不是因为作者的文件描述符可能被读者滥用(我不清楚如何)

0 投票
4 回答
3714 浏览

process - 为什么 ioctl() 不阻塞?

我已经编写了使用流在不相关进程之间传递文件描述符的代码。服务器应该等待客户端发送文件描述符。这是服务器代码:

但我收到错误号 9 - 错误的文件描述符。

0 投票
2 回答
16218 浏览

python - Python - 从管道中简单读取行

我正在尝试从管道中读取行并对其进行处理,但我正在做一些愚蠢的事情,我不知道是什么。生产者将无限期地继续生产线,如下所示:

生产者.py

消费者只需要定期检查线路:

消费者.py

当我在 Windows shell as 中运行它时python producer.py | python consumer.py,它只是永远休眠(似乎从不获取数据?)似乎问题在于生产者永远不会终止,因为如果我发送有限数量的数据,那么它就可以正常工作。

如何获取要接收的数据并显示给消费者?在实际应用程序中,生产者是我无法控制的 C++ 程序。

0 投票
5 回答
11758 浏览

c++ - Unix管道如何在主进程和线程之间使用?

每当信号从线程到达主进程时,我都会尝试通过管道传输数据。

这可能吗?
如何才能做到这一点?


问题:

  1. 子线程读取数据并将其放入队列中。
  2. 主应用程序做自己的事情,但是,当队列中有数据可用时,它应该由线程通知,并开始处理数据(主线程可以访问队列)。

这个场景应该如何实现?

0 投票
1 回答
664 浏览

php - PHP正则表达式中的管道问题

我一直在为 Joomla 编写一个自动处理 HTML 注释的插件,例如。{dropcap}B{/dropcap} 并创建首字下沉样式。

我需要一种将参数传递给插件的方法,因此决定最好的方法是:{dropcap}B|FF00FF|00FF00{/dropcap}。

我创建了一个函数:

如果我使用'|' 字符脚本可以工作,但每次使用管道字符时都会创建一个单独的 dropcap,而如果我使用不同的分隔符,例如。':' 脚本运行良好。

我绝对想使用管道字符,因为它通常不用于 HTML,因此我可以扩展插件的使用,有没有办法阻止这种奇怪的行为?