问题标签 [piping]

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 投票
3 回答
2740 浏览

unix - 管道作为进程间通信

我有兴趣编写单独的程序模块,这些模块作为独立线程运行,我可以与管道挂钩。动机是我可以完全独立地编写和测试每个模块,甚至可以用不同的语言编写它们,或者在不同的机器上运行不同的模块。这里有各种各样的可能性。我已经使用管道一段时间了,但我不熟悉其行为的细微差别。

  • 似乎接收端会阻塞等待输入,这是我所期望的,但是发送端有时会阻塞等待某人从流中读取吗?
  • 如果我将 eof 写入流,我可以继续写入该流直到我关闭它吗?
  • 命名管道和未命名管道的行为是否存在差异?
  • 我首先用命名管道打开管道的哪一端有关系吗?
  • 不同 Linux 系统之间管道的行为是否一致?
  • 管道的行为是否取决于我使用的 shell 或我配置它的方式?
  • 如果我想以这种方式使用管道,是否还有其他问题我应该问或我应该注意的问题?
0 投票
3 回答
5976 浏览

python - Windows 上的 Python 管道:为什么这不起作用?

我正在尝试这样的事情

输出.py

输入.py

在 cmd 行

但它返回一个EOFError。有人可以告诉我我做错了什么吗?

谢谢你的帮助。

编辑
帕特里克哈灵顿解决方案有效,但我不知道为什么......

0 投票
4 回答
14216 浏览

c - 在 C 中使用 popen() 失败?

我可以运行以下命令

xwd -root | xwdtopnm | pnmtojpeg > screen.jpg

在 linux 下的终端中,它将生成我当前屏幕的屏幕截图。

我尝试使用代码执行以下操作:

然后我编译并运行程序./popen > screen.jpg,但生成的文件 screen.jpg 无法识别。我怎样才能做到这一点,以便我可以正确地通过我的程序?

0 投票
3 回答
88 浏览

linux - 将数据从程序写入文件

我正在使用Linux。假设我有一个名为 add 的程序。该程序需要两个数字。

所以如果我输入

答案是 3 //很明显

什么命令会将其写入名为 add.data 的文件

我有点像linux n00b。我正在阅读有关管道的信息。谢谢。

0 投票
2 回答
2503 浏览

php - 将邮件传送到 PHP 时提取附件

我知道通过我的 cPanel 托管,我可以将电子邮件收件箱通过管道传输到脚本,但我想要做的是:

  1. 发送至 hi@hi.com
  2. 管道到 mail.php
  3. mail.php 读取主题和 .txt 附件
  4. 主题和.txt附件的内容存储在数据库中

有没有办法用直接的 PHP 做到这一点?

0 投票
2 回答
3084 浏览

c - C中管道命令的问题

我正在尝试用 C 语言为 Unix 创建一个简单的 shell。我已经能够完成所有命令的解析和执行,但是我遇到了管道问题。我认为问题在于我没有连接到正确的管道以输入第二个命令。

例如,如果我输入“ls | wc”,它会在“wc”命令之后暂停,我认为这是因为它正在等待输入。我认为问题是当我使用 dup2(reading[i],0) 时,它没有连接到正确的管道。

我知道这是一个有点宽泛的问题,但如果我能得到任何指示,我将不胜感激。这是创建新进程并尝试对它们进行管道传输的代码。



更新:感谢理查德,我能够弄清楚。这是以错误的顺序关闭文件描述符并且根本不关闭一些文件描述符的组合。这是工作代码。

0 投票
5 回答
1829 浏览

lisp - Lisp 链接函数宏

是否有现成的 lisp 宏允许链接(管道)函数?我找不到一个。我将尝试用这个例子解释我的意思。

而不是像这样使用带有大量未使用的中间变量的 let* :

我想把它写成这样:

其中,显然_将是前一个表达式的返回值。一个优点是是否可以使用_1_2、 ... 来引用以前返回的值。

这就是想法,确切的语法并不那么重要。

我知道这并不难写,但似乎很有用,必须已经写好了。

0 投票
1 回答
128 浏览

unix - UNIX 中的管道疑问

在 K&P 的《Unix 编程环境》中写道:
“管道中的程序实际上是同时运行的,而不是一个接一个。
这意味着管道中的程序可以是交互式的;”

程序如何同时运行?
例如:$ 谁 | grep 玛丽 | wc -l
grep mary 将如何执行直到谁运行或者 wc -l 将如何执行直到它知道先前程序的结果?

0 投票
2 回答
11735 浏览

c - 管道实现

我正在尝试实现一个支持管道的 linux shell。我已经完成了简单的命令、后台运行的命令、重定向,但仍然缺少管道。

我已经阅读过它并看到了一些代码片段,但仍然无法找出一个可行的解决方案。

到目前为止我所拥有的:

我是一个新手程序员,你可能会说,当我编写一些我不太了解的东西时,很明显就是这种情况,我喜欢从一些非常简单和具体的东西开始,然后从那里开始构建。

因此,在能够在管道中实现三个或更多不同的命令之前,我希望能够计算“ls names.txt | sort”或类似的东西,其中 names.txt 是一个按字母顺序排列的名称文件。

更新了代码,还是不行。

谢谢。

0 投票
6 回答
48115 浏览

unix - 在 Unix 上结合 echo 和 cat

非常简单的问题,我如何在 shell 中结合 echo 和 cat,我正在尝试将文件的内容写入另一个带有前置字符串的文件?

如果 /tmp/file 看起来像这样:

我想运行这个:

所以 /tmp/result 看起来像这样:

谢谢。