问题标签 [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.
c - 在 C 中使用 fork()、pipe()、dup2() 和 exec() 时遇到问题
这是我的代码:
(代码已更新以反映他下面两个答案提出的更改,它仍然无法正常工作......)
这是失败的测试用例:
问题是我应该在那之后返回我的shell,我应该看到“Shell>”等待更多输入。您还可以注意到,您没有看到类似于“[4804] TERMINATED (Status: 0)”(但 pid 不同)的消息,这意味着第二个进程没有终止。
我认为它与 grep 有关,因为它有效:
您可以轻松地看到两个“终止”消息...
那么,我的代码有什么问题?
python - FIFO(命名管道)消息传递障碍
我计划使用 Unix 命名管道 (mkfifo) 进行简单的多进程消息传递。一条消息将只是一行文本。
你会劝阻我吗?我应该期待什么障碍?
我注意到了这些限制:
- 在收到消息之前,发件人无法继续。
- 接收器被阻塞,直到有一些数据。当我们需要停止读取时,将需要非阻塞 IO。例如,另一个线程可能会要求这样做。
- 接收者可以在一次读取中获得许多消息。这些必须在退出前处理。
- 原子消息的最大长度限制为 4096 字节。这是 Linux 上的 PIPE_BUF 限制(参见 man 7 pipe)。
我将在 Python 中实现消息传递。但障碍普遍存在。
bash - ">/dev/null 2>&1" 是否有命令行快捷方式
每当我不想看到程序的输出时,输入这个真的很烦人。我很想知道是否有更短的写法:
通用 shell 是最好的,但其他 shell 也会很有趣,尤其是 bash 或 dash。
c - C 中的这种多管道代码有意义吗?
几天来我已经提出了一个关于这个的问题。我的解决方案与已接受答案中建议的内容一致。但是,我的一个朋友提出了以下解决方案:
请注意,代码已经更新了几次(检查编辑修订)以反映以下答案中的建议。如果你打算给出一个新的答案,请记住这个新代码,而不是有很多问题的旧代码。
这会通过 bash 中的管道模拟一系列命令,例如: cmd1 | 命令2 | ... | cmd_n。我说“模拟”,因为如您所见,命令实际上是从参数中读取的。只是为了节省时间编写一个简单的 shell 提示符......
当然,还有一些问题需要修复和添加,比如错误处理,但这不是重点。我想我有点得到代码,但它仍然让我很困惑这整个事情是如何工作的。
我是否遗漏了某些东西,或者这确实有效,并且它是解决问题的好而干净的解决方案?如果没有,谁能指出这段代码存在的关键问题?
java - 从 Apache Commons-Exec 捕获大量输出
我正在通过执行ffmpeg
并将其输出捕获到标准输出来用 Java 编写视频应用程序。我决定使用 Apache Commons-Exec 而不是 Java Runtime
,因为它看起来更好。但是,我很难捕获所有输出。
我认为使用管道将是可行的方法,因为它是进程间通信的标准方式。但是,我使用PipedInputStream
and的设置PipedOutputStream
是错误的。它似乎有效,但仅适用于流的前 1042 个字节,奇怪的是恰好是PipedInputStream.PIPE_SIZE
.
我不喜欢使用管道,但我想避免使用磁盘 I/O(如果可能的话),因为速度和数据量(512x384 分辨率的 1m 20s 视频会产生 690M
个管道数据)。
关于处理来自管道的大量数据的最佳解决方案的想法?我的两个课程的代码如下。(是的,sleep
很糟糕。对此有什么想法? wait()
和notifyAll()
?)
WriteFrames.java
YUV4MPEGPipeParser.java
pipe - 为什么管道中存在不对称行为
为什么当没有作者时读者可以存在,但当管道中没有读者时,作者不能存在?
. 是不是因为读取器是要等待的,所以如果没有写入器也没关系,而写入器已准备好数据,即使它已准备好数据,也不知道它必须等待多长时间。
. 是不是因为作者的文件描述符可能被读者滥用(我不清楚如何)
process - 为什么 ioctl() 不阻塞?
我已经编写了使用流在不相关进程之间传递文件描述符的代码。服务器应该等待客户端发送文件描述符。这是服务器代码:
但我收到错误号 9 - 错误的文件描述符。
python - Python - 从管道中简单读取行
我正在尝试从管道中读取行并对其进行处理,但我正在做一些愚蠢的事情,我不知道是什么。生产者将无限期地继续生产线,如下所示:
生产者.py
消费者只需要定期检查线路:
消费者.py
当我在 Windows shell as 中运行它时python producer.py | python consumer.py
,它只是永远休眠(似乎从不获取数据?)似乎问题在于生产者永远不会终止,因为如果我发送有限数量的数据,那么它就可以正常工作。
如何获取要接收的数据并显示给消费者?在实际应用程序中,生产者是我无法控制的 C++ 程序。
c++ - Unix管道如何在主进程和线程之间使用?
每当信号从线程到达主进程时,我都会尝试通过管道传输数据。
这可能吗?
如何才能做到这一点?
问题:
- 子线程读取数据并将其放入队列中。
- 主应用程序做自己的事情,但是,当队列中有数据可用时,它应该由线程通知,并开始处理数据(主线程可以访问队列)。
这个场景应该如何实现?
php - PHP正则表达式中的管道问题
我一直在为 Joomla 编写一个自动处理 HTML 注释的插件,例如。{dropcap}B{/dropcap} 并创建首字下沉样式。
我需要一种将参数传递给插件的方法,因此决定最好的方法是:{dropcap}B|FF00FF|00FF00{/dropcap}。
我创建了一个函数:
如果我使用'|' 字符脚本可以工作,但每次使用管道字符时都会创建一个单独的 dropcap,而如果我使用不同的分隔符,例如。':' 脚本运行良好。
我绝对想使用管道字符,因为它通常不用于 HTML,因此我可以扩展插件的使用,有没有办法阻止这种奇怪的行为?