问题标签 [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 投票
2 回答
8842 浏览

bash - 设置从命名管道读取的管道而不在 bash 中阻塞

我正在寻找一个打开给定管道的文件描述符的子进程,这样 open() 调用不会挂起等待管道的另一端接收连接。

展示:

在这种情况下,some_program直到某个进程/tmp/foobar.pipe打开以供写入,才会运行;然而,some_program即使它没有接收命令也有有用的效果,因此所需的行为是some_program立即执行。

通过另一种脚本语言(python、perl 等)或以标志打开的 C 包装器执行此操作的机制/tmp/foobar.pipeO_NONBLOCK显而易见的;如果可能的话,我正在寻找一种纯 bash 解决方案。

0 投票
2 回答
2747 浏览

c++ - 可以跨局域网计算机使用管道吗?

可以跨局域网计算机使用管道吗?

特别是我正在寻找 Windows,但如果您有其他平台上的更多信息,那也将有助于以后找到此线程的其他人。

0 投票
1 回答
3817 浏览

c++ - 为什么在 Windows/unix/linux 中使用管道被认为是危险的?

为什么管道被认为是危险的使用?可以做些什么来避免这些安全问题?

我对 Windows 最感兴趣,但如果您有其他操作系统信息,请提供。

0 投票
4 回答
15738 浏览

language-agnostic - Windows 和 Linux 中的管道有什么区别?

Windows 和 Linux 中的管道有什么区别?

0 投票
8 回答
37362 浏览

c# - C# 控制台使用管道接收输入

我知道如何使用参数对控制台应用程序进行编程,例如:myProgram.exe param1 param2。

我的问题是,如何使我的程序与 | 一起使用,例如:echo "word" | 我的程序.exe?

0 投票
4 回答
21752 浏览

c - 在管道中获取命令输出,C for Linux

我需要运行一个 Linux CLI 命令并从 C 中获取它的标准输出。

我可以使用 pipe() 创建一个管道,然后 fork/exec,在调用 exec() 之前将子级的标准输出描述符重定向到管道中,并从父级的管道中读取。另外,我需要等孩子。

是否有一个简单的调用来做 fork + redirect + exec + wait,就像 system() 做 fork + exec + wait 一样,只有 system() 不做重定向。

有 popen(),它执行 fork + redirect + exec,但不执行等待,所以我无法获得退出状态。

0 投票
4 回答
784 浏览

c - 在 **portable C** 中,如何启动将命令的标准输入连接到启动器的标准输出的命令?

在 C 程序 (p1) 中,如何启动从 p1 的标准输出读取其标准输入的动态构造命令(及其参数)?

注意:

  1. 除了这个 stdout --> stdin 管道之外的方法也可以,只要 它在 Windows 和 Linux 上是可移植的。

  2. 我不能在这里使用 C++、Java、Perl、Ruby、Python 等。

此外,这是否会对其 Windows 构建有 MinGW 依赖项?

REOPENED:下面的问题为 Linux 提供了答案,但这个问题需要一种可移植的方法。 从 C 程序中执行程序

0 投票
2 回答
1029 浏览

c# - 从安全的角度来看,在 Windows 中使用管道是否被认为是危险的?

从安全的角度来看,在 Windows 中使用管道是否被认为是危险的?

0 投票
2 回答
1540 浏览

c++ - 跨平台双向 IPC

我有一个我认为会相对容易的项目,但结果却是我所希望的更多痛苦。首先,我与之交互的大部分代码都是我无法控制的遗留代码,因此我无法进行大的范式更改。

这是我需要做的简单解释:假设我有大量从标准输入读取并写入标准输出的简单程序。(这些我不能碰)。基本上,标准输入的输入是“将温度设置为 100”之类的命令或类似的命令。并且输出是事件“温度已设置为 100”或“温度已降至设定值以下”。

我想做的是编写一个应用程序,它可以启动一堆这些简单的程序,监视事件,然后根据需要向它们发送命令。我最初的计划是使用类似 popen 的东西,但我需要一个双向的 popen 来获得读写管道。我一起破解了一些我称之为popen2的东西,在那里我将运行命令和两个填充了读写流的FILE *传递给它。然后我需要做的就是编写一个简单的循环,从每个进程的每个标准输出中读取,执行它需要的逻辑,然后将命令写回正确的进程。

这是一些伪代码

真正的程序更复杂,它在流中查看是否有任何东西在等待,如果没有,它将跳过该进程,同样,如果它不需要向某个进程发送命令,它不需要。但是这段代码给出了基本的想法。

现在这在我的 UNIX 机器上工作得很好,甚至在带有 cygwin 的 Windows XP 机器上也很好。但是,现在我需要让它在本地运行在 Win32 上。

困难的部分是我的 popen2 使用 fork() 和 execl() 来启动进程并将流分配给子进程的标准输入和标准输出。有没有一种干净的方法可以在 Windows 中做到这一点?基本上,我想创建一个popen2,它在windows 中的工作方式与我的unix 版本相同。这样,唯一的 Windows 特定代码将在该函数中,我可以摆脱其他一切以相同方式工作的情况。

有任何想法吗?

谢谢!

0 投票
8 回答
125641 浏览

windows - 如何获取 Windows 中所有打开的命名管道的列表?

有没有一种简单的方法来测试您的命名管道是否正常工作?我想确保我从我的应用程序发送的数据实际上正在发送。有没有一种快速简便的方法来获取所有命名管道的列表?