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

c - 如何在管道上放置指针?

假设我有一个指向线程中某个结构的指针,我想通过管道将它传递给父进程。


例子:

然后我想投到someTypevoid *把它放在管道上。怎么做到呢?

0 投票
3 回答
33985 浏览

bash - 你如何通过 grep 管道输入到另一个实用程序?

我正在使用“tail -f”来跟踪更新的日志文件;接下来,我将其输出传递给 grep 以仅显示包含搜索词的行(在本例中为“org.springframework”);最后我想做的是将 grep 的输出通过管道传输到第三个命令“cut”:

如果 cut 命令可以从 grep 获取输入,它会为我删除每行的前 25 个字符!(如果我从链中删除“grep”,它会按预期工作。)

我在 bash 中使用 cygwin。

实际结果:当我添加第二个管道以连接到“cut”命令时,结果是它挂起,就好像它在等待输入一样(以防你想知道)。

0 投票
3 回答
2024 浏览

c++ - 如何将数据从线程传递到父进程?

我有一个使用单线程库的主进程,我只能使用主进程中的库函数。我有一个由父进程生成的线程,它将从网络接收到的信息放入队列中。

我需要能够告诉主进程有东西在队列中。然后它可以访问队列并处理对象。线程无法处理这些对象,因为该库只能由一个进程调用。

我想我需要使用管道和信号。我还从各种新闻组中了解到我需要使用“自我欺骗”管道。

这个场景应该如何实现?

以下帖子的更具体案例:

unix管道如何在主进程和线程之间使用?

0 投票
5 回答
11254 浏览

c++ - 为什么我在读写管道时需要关闭 fds?

这是一个例子来说明我的意思:

}

但是,如果我的一个进程需要连续写入管道而另一个管道需要读取怎么办?

上面的例子似乎只适用于一次写入和一次读取。

0 投票
1 回答
1395 浏览

.net - 从 psexec 运行的 .NET 控制台应用程序没有输出

我有一个非常奇怪的问题,我使用 psexec 在远程服务器上运行托管的 .net 控制台应用程序。我收到此错误“进程试图写入不存在的管道”。

现在我编写了一个非托管 C++ 程序来输出到 std::cout,它工作得很好。

有趣的是,如果我远程运行 cmd.exe 并使用 /u (unicode) 选项,我不会收到错误消息,但我会将垃圾文本流式传输回控制台。

谁能解释这里可能发生了什么?

干杯,马克

0 投票
2 回答
24140 浏览

gcc - 是否可以让 GCC 从管道中读取?

我正在寻找一个选项gcc,它将使它从标准输入中读取源文件,主要是这样我可以做这样的事情来从flex生成 C 代码之类的工具生成目标文件(flex-t选项写入生成的 C到标准输出):

因为我并不真正关心生成的 C 文件。

是否存在这样的东西,还是我必须使用临时文件?

0 投票
1 回答
1192 浏览

c - HP-UX 上的 GCC,大量 poll()、pipe() 和文件问题

我在构建“中间人”记录器时遇到了很多麻烦 - 目的是将它放在 /usr/bin 中项目上方的路径上,并捕获进出应用程序的所有内容。(黑盒第 3 方应用程序由于某种原因无法通过 FTP。)一旦运行,中间人将分叉,将标准输出和标准输入重定向到/从父级控制的管道,然后执行 /usr/bin 中的程序。(硬编码;是的,我知道,我很糟糕。)

但是,一旦我运行 poll(),事情就会变得很奇怪。我失去了我的日志文件的句柄,来自孩子的输出管道上的投票引发了错误,猫和狗开始生活在一起,等等。

任何人都可以对此有所了解吗?

这是我目前拥有的... 有问题的 poll() 标有非缩进注释,以便于定位。


编辑 09 年 6 月 23 日下午 12:20

修复后,我尝试通过该程序运行“横幅”,这是我得到的输出......

日志文件具有以下内容:

ERRNO 中有一个 0 的原因是因为 poll() 返回得很好;是 pollArray[1].revents 返回错误,这意味着 childOutPipe[0] 被轮询为有错误。据我所知,logChar() 永远不会被调用。

我将尝试将 poll() 拆分为两个不同的调用。


好的,当我 poll() 时——即使在标准输入上,它也不会返回错误消息——它会扼杀我写入日志文件的能力。此外,我发现 while() 循环在输出轮询返回管道错误之前运行了几次。我越来越相信 poll() 只是一个失败的原因。
在 poll() 之后,每次写入 logFile 的尝试都会失败,即使是成功的 poll(),也会将 errno 设置为“错误文件号”。这真的不应该发生。老实说,我看不出它会如何影响我的文件句柄。
好吧,看来我是个白痴。谢谢你让我直截了当;我假设 nfds 是字节大小,而不是数组大小。这是固定的,瞧!它不再杀死我的 logFile 句柄。

0 投票
2 回答
12251 浏览

python - Python - 子进程 - 如何在 Windows 中调用管道命令?

如何使用子进程运行此命令?

我试过了:

但得到:

我注意到的事情:

  1. 在 Windows 控制台上运行命令可以正常工作。
  2. 如果我移除 ECHO bosco| 部分,它在上面的 popen 调用中运行良好。所以我认为这个问题与echo或|有关。
0 投票
3 回答
6024 浏览

c - 在启用换行的情况下将终端光标返回到行首

我正在编写一个过滤器(在一个用于终端输出的管道中),有时需要“覆盖”刚刚发生的一行。它的工作原理是逐个字符地将标准输入传递给标准输出,直到\n达到 a,然后调用特殊行为。我的问题是如何返回到行首。

我首先想到的是使用 a\r或 ANSI 序列\033[1G。但是,如果行长到足以在终端上换行(并因此导致它滚动),这些只会将光标移回当前物理行。

我的第二个想法是跟踪行的长度(自上一个以来传递的字符数\n),然后\b多次回显。但是,如果该行包含控制字符或转义序列(可能还有 Unicode?),就会出错。

缺少搜索所有特殊序列并使用它来调整我的字符数,有没有一种简单的方法来实现这一点?

0 投票
1 回答
253 浏览

architecture - 非分层应用程序的模式

在企业应用架构模式中,Martin Fowler 写道:

因此,本书是关于如何将企业应用程序分解为层以及这些层如何协同工作的。大多数重要的企业应用程序使用某种形式的分层架构,但在某些情况下,其他方法(例如管道和过滤器)很有价值。我不会进入这些情况,而是关注分层架构的上下文,因为它是最有用的。

构建非分层应用程序/应用程序部分存在哪些模式?以金融机构的统计建模引擎为例。可能有一个数据访问层,但我希望大部分代码都在一个层中。您是否还会期望在这样的层中看到“四人帮”模式?域模型怎么样?您会完全使用 OO,还是纯粹是功能性的?

引用提到管道和过滤器作为层的替代模型。我可以很容易地想象一个这样的引擎使用管道作为分解数据处理的一种方式。还存在哪些其他模式?任务调度、结果聚合或工作分配等领域是否有共同的模式?MapReduce 有哪些替代方案?