问题标签 [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 回答
4182 浏览

amazon-web-services - Amazon Web services - 检索愿望清单

我一直在修补 Yahoo Pipes 和Amazon Product Advertising API(以前称为 ECS)SDK来检索我的愿望清单。

问题是,虽然我可以很好地获得愿望清单上的所有项目,但它似乎也包括我已经删除的项目。

有没有其他人使用过这个 API 并注意到了这一点?有办法解决吗?

更新:

要求在评论中提供更多信息...

这是我用来获取愿望清单 XML 的 URL:

这是 XML 响应的相关部分:

XML 的其余部分要么是更多类似的列表项,要么是响应顶部的有关请求的信息。

0 投票
6 回答
2265 浏览

c - 查明管道的读取端当前是否阻塞

我试图找出子进程是否正在等待用户输入(不解析其输出)。是否有可能在 Unix 上的 C 中确定管道的读取端当前是否有 read() 调用阻塞?

问题是,我无法控制子进程中执行的程序。他们打印出我通常希望重定向到 /dev/null 的各种冗长的垃圾。偶尔会提示用户一些东西。(提示没有可靠的格式。)所以我的想法是:

  • 在一个循环中:
    • 排空孩子的标准输出,将其附加到临时缓冲区。
    • 检查(不知道如何)孩子是否要求用户输入,在这种情况下,缓冲区将打印到标准输出。
  • 当孩子退出时,扔掉缓冲区。
0 投票
2 回答
2158 浏览

c# - 在 .NET 应用程序的重定向控制台输出中检测封闭管道

当应用程序将其输出通过管道传输到另一个程序并且另一个程序在应用程序完成之前终止或关闭管道时,.NETConsole类及其默认TextWriter实现(可Console.Out在 eg 中隐含地使用Console.WriteLine())不会发出任何错误信号。这意味着应用程序可能会运行比必要的更长的时间,将输出写入黑洞。

如何检测重定向管道另一端的关闭?

更详细的解释如下:

下面是一对演示该问题的示例程序。Produce相当慢地打印大量整数,以模拟计算的效果:

Consume只读取前 10 行输入然后退出:

如果这两个程序被编译,并且第一个的输出通过管道传输到第二个,如下所示:

...可以观察到,在终止Produce后很长时间仍会继续运行。Consume

实际上,我的Consume程序是 Unix 风格head的,我的Produce程序打印的数据计算成本很高。我想在管道的另一端关闭连接时终止输出。

我怎样才能在.NET 中做到这一点?

(我知道一个明显的替代方法是传递一个命令行参数来限制输出,这确实是我目前正在做的事情,但我仍然想知道如何做到这一点,因为我希望能够做出更多关于何时终止读取的可配置判断;例如管道通过grepbefore head。)

更新:看起来很可怕System.IO.__ConsoleStream,.NET 中的实现被硬编码以忽略错误 0x6D ( ERROR_BROKEN_PIPE) 和 0xE8 ( ERROR_NO_DATA)。这可能意味着我需要重新实现控制台流。叹...)

0 投票
2 回答
5723 浏览

linux - C 中的管道损坏——pipe()、fork()、exec() 程序

我需要编写一个简单的程序:将有一个 Parent 和一些程序 [children](通过execlParent 开始)。孩子们以这种方式相互交流:孩子我感知到父母编号 J,父母向 J 发送消息(类似于 - “有消息给你”),J 发送给父母编号 K 等等。

还有一个问题——我的程序(通过strace命令测试)试图向孩子发送一条消息,然后出现了损坏的管道错误。

如果有人查看代码并告诉我出了什么问题,我将不胜感激:

这是代码:

0 投票
9 回答
48573 浏览

java - 为什么没有更多的 Java 代码使用 PipedInputStream / PipedOutputStream?

我最近发现了这个成语,我想知道我是否缺少一些东西。我从未见过它使用过。我在野外使用过的几乎所有 Java 代码都倾向于将数据放入字符串或缓冲区中,而不是像这个例子那样(例如使用 HttpClient 和 XML API):

该代码使用 Unix 管道样式技术来防止将 XML 数据的多个副本保存在内存中。它使用 HTTP Post 输出流和 DOM 加载/保存 API 将 XML 文档序列化为 HTTP 请求的内容。据我所知,它通过很少的额外代码(仅用于RunnablePipedInputStream和的几行PipedOutputStream)最大限度地减少了内存的使用。

那么,这个成语有什么问题呢?如果这个成语没有错,为什么我没看到呢?

编辑:澄清PipedInputStreamPipedOutputStream替换随处可见的样板缓冲区副本,它们还允许您同时处理传入数据并写出处理后的数据。他们不使用操作系统管道。

0 投票
1 回答
680 浏览

visual-studio - Visual Studio 构建事件中的管道

我正在使用带有 SP1 的 Visual Studio 2005 Express Edition。

我有一个预链接事件,它需要调用一个程序并将其输出发送到另一个程序。

从命令行或批处理文件调用时,此命令按预期工作。从 Pre-Link 事件调用该命令时会失败(即使 Pre-Link 事件调用包含该命令的单独批处理文件)。'foo' 运行并产生出现在 Visual Studio 中的输出,但此输出不会馈送到 'bar',实际上它似乎根本不会调用 'bar'。即使当 Pre-Link 事件调用 CMD 或 NMAKE 进而调用管道命令时,也只有 'foo' 运行。

Visual Studio 是否损坏和/或我可以执行一些神秘的仪式来完成这项工作?

0 投票
1 回答
737 浏览

perl - 如何打开具有 OO 风格的管道?

我用新的风格重写了我的旧代码,如下所示:

文件没问题,但我不知道如何打开管道。

OO Style IO如何处理管道?

补充:
谢谢乔纳森,很好。

0 投票
2 回答
9346 浏览

perl - 如何在不使用 select 的情况下在 Perl 中检查(窥视)STDIN 以获取管道数据?

我正在尝试处理没有参数和管道数据传递给 Perl 脚本的可能性。我假设如果没有参数,那么输入将通过 STDIN 进行管道传输。但是,如果用户没有提供任何参数并且没有向脚本传递任何内容,它将尝试获取键盘输入。我的目标是提供错误消息。

不幸的是,select()它不能移植到一些非 POSIX 系统。是否有另一种方法可以最大限度地提高便携性?

0 投票
1 回答
4386 浏览

pipe - 使用同步 NamedPipes 同步读写

命名管道服务器是用

然后我们立即调用:

在客户端连接之前阻塞。

然后我们直接进入 ReadFile( hPipe, ...

问题是客户端需要有限的时间来准备和写入所有 fcgi 请求参数。这通常在 Pipe Server 执行其 ReadFile() 之前尚未完成。因此,读取文件操作在管道中找不到任何数据,并且该过程失败。

在客户端连接到 NamedPipe 后,是否有一种机制来判断 Write() 何时发生/完成?

如果我可以控制客户端进程,我可以使用一个普通的互斥锁,但我没有,我真的不想为了解决这个问题而进入 I/O 完成端口!

我当然可以使用一个简单的计时器来等待 60m/s 左右,这通常是足够的时间来完成写入,但这是一个可怕的 hack。

0 投票
2 回答
2282 浏览

syntax - 将 F# 管道符号与对象构造函数一起使用

我试图找出正确的语法来使用管道运算符 |> 来创建对象。目前我正在使用一个静态成员来创建对象并只是通过管道传递给它。这里是简化版。

我想做的事 ...

这样的事情可能吗?我不想通过使用静态成员创建重复我的构造函数来复制代码。

从 F# 4.0 开始,更新 构造函数是一流的函数

在 F# 4.0 中,正确的语法是。