pipe 相关问题

Unix管道连接两个进程的文件描述符。使用在<unistd.h>中声明的POSIX pipe()函数创建管道。 Shell使用“|”在进程之间提供管道创建。也可以使用CreatePipe()在Windows上创建管道。这个概念可用于将标准输入,标准输出和标准错误可移植地重定向到.net和Java语言中的调用过程。

进程之间重定向输出和输入流的问题

我正在用c写一个类似管道的东西。当有多个“|”时,它会崩溃而其他进程必须读取前一个进程的输出。 #定义_GNU_SOURCE #包括 #包括...

回答 1 投票 0

如何在“file-with-patterns”频繁变化的管道中使用“grep -f file-with-patterns”?

我正在尝试动态记录已删除的防火墙事件,从而可以动态指定不记录哪些事件。 我用: 日志读取-f | grep -v -f 带模式的文件 >> 日志文件 在脚本中

回答 1 投票 0

如何从 Rust 进程内部重定向 stderr?

我正在尝试从进程内部重定向 Stderr 文件描述符,但似乎没有它的实现,并且我没有看到从 C/C++ 到类似于 dup2 的任何内容的明确路线。 我...

回答 2 投票 0

Linux 中的命名管道与 Python 读/写丢失了一些文本行

我正在学习如何使用命名管道在进程之间传递数据。为了对其进行测试,我编写了两个 Python 脚本,分别称为 pipelinewriter.py 和 pipelinereader.py,以及一个名为 my_pipe 的命名管道(使用

回答 1 投票 0

popen() 的输出与执行“sh -c cmdstring”不同

描述 我测试了APUE(UNIX环境中的高级编程,3ed)、15.3 popen和plcose函数的示例。 示例代码如下 #include“apue.h” #包括 描述 我测试了APUE(UNIX环境中的高级编程,3ed)、15.3 popen和plcose函数的示例。 示例代码如下 #include "apue.h" #include <sys/wait.h> #define PAGER "${PAGER:-more}" /* environment variable, or default */ int main(int argc, char *argv[]) { char line[MAXLINE]; FILE *fpin, *fpout; if (argc != 2) err_quit("usage: a.out <pathname>"); if ((fpin = fopen(argv[1], "r")) == NULL) err_sys("can't open %s", argv[1]); if ((fpout = popen(PAGER, "w")) == NULL) err_sys("popen error"); /* copy argv[1] to pager */ while (fgets(line, MAXLINE, fpin) != NULL) { if (fputs(line, fpout) == EOF) err_sys("fputs error to pipe"); } if (ferror(fpin)) err_sys("fgets error"); if (pclose(fpout) == -1) err_sys("pclose error"); exit(0); } 我的输入文件是“temp.in”,我们有 $ cat temp.in test sentence 示例的输出如下 $ ./popen2 temp.in test sentence 问题 如 APUE 中所示,执行 fpout = popen(cmdstring, "w") 类似于其子进程执行 sh -c cmdstring。因此,上一节中显示的代码 popen 应该执行 sh -c "${PAGER:-more} test sentence" 我的操作系统(Ubuntu 22.04.3 LTS)没有名为 PAGER 的环境值,因此它应该执行 sh -c "more test sentence" 但是,据我所知,命令more的选项应该是文件名。在我的系统中测试以下顺序并获得输出,这与我上面推断的不同: $ ${PAGER:-more} temp.in test sentence $ ${PAGER:-more} test sentence more: can't open test: no such file or directory more: can't open sentence: no such file or directory 我的推论有什么问题吗? 好了,popen()的逐步工作原理如下(我们忽略一些不相关的检查): 第一:货币进程调用pipe()创建管道 int pfd[2]; pipe(pfd); 第二:当前进程调用fork()创建子进程。 if (fork() == 0) /* child process work */ else if(fork() > 0) /* parent process work */ 第三:子进程和父进程关闭自己的fileno以创建单向管道。编辑popen(cmdstring, "r"),父进程关闭其写文件号,子进程关闭其读文件号。 /* child process work */ close(pfd[0]); // pfd[0] is read port /* parent process work */ close(pfd[1]); // pfd[0] is write port 第四:父进程和chile进程重定向自己的fileno。编辑popen(cmdstring, "r"),父进程将其 STDIN_FILENO 重定向至读端口,子进程将其 STDOUT_FILENO 重定向至写端口。 /* child process work */ dup2(pfd[1], STDOUT_FILENO); close(pfd[1]); /* parent process work */ dup2(pfd[0], STDIN_FILENO); close(pfd[0]); 然后,子进程可以将其输出写入管道,父进程可以通过其标准输入从其子进程读取消息。 回到问题。 popen({PAGER:-more}, "w") 将货币进程的标准输出连接到 more 进程的标准输入。 因此,fgets(line, MAXLINE, fpin)从argv[1]读取字符串并将字符串通过管道传输到more,more将其打印到终止。例子的效果类似 cat $argv1 | ${PAGER:-more}

回答 1 投票 0

如何使用管道中的生产者进程重新启动消费者进程

我确实有这个: 设置-eo管道故障; 虽然真实;做 echo '(重新)启动服务器...' ( 读取行时;做 如果测试“$line”==“rs”;然后 echo '正在重新启动...' > /...

回答 1 投票 0

在 C 中的管道上写入

我正在尝试创建一个基本上有2个进程的程序。第一个从用户那里获取一个字符串并将其传递给另一个。第二个从管道中读取字符串。大写然后发送

回答 2 投票 0

Golang 使用 Run() 执行的命令没有返回

我正在尝试使用 youtube-dl 和 ffmpeg 创建音乐流服务。当用户发送带有视频 URL 的 POST 请求时,我的处理程序代码的工作原理如下: router.POST("/提交...

回答 1 投票 0

管道传输时函数内控制台的消息顺序

为了跟踪某些函数的处理,我想在函数启动和完成时在控制台中打印消息。 我是 tidyverse 和管道操作员的忠实粉丝 %>...

回答 2 投票 0

为什么写端关闭后,FIFO 中还继续读?

我有2个Python程序。一是读者 fifo_read=打开('缓冲区','r') 而真实: 数据=fifo_read.read(1) print('"',数据,'"从缓冲区读取') 另一个是作家 导入...

回答 1 投票 0

Hadoop Pipes Wordcount 示例:LocalJobRunner 中的 NullPointerException

我正在尝试运行本教程中有关 Hadoop Pipes 的示例: 我在编译和一切方面都取得了成功。但是,运行后它向我显示 NullPointerException 错误。我尝试了很多...

回答 1 投票 0

我可以使用 asyncio 读取和写入 multiprocessing.Pipe 吗?

我需要在Python中的进程之间进行通信,并且在每个进程中使用asyncio来实现并发网络IO。 目前我正在使用 multiprocessing.Pipe 来发送和接收显着的l...

回答 2 投票 0

Python3子进程通信示例

我是子处理新手。 我只需要一个在parent.py 和child.py 之间进行通信()的非常简单的win32 示例。从parent.py发送到child.py的字符串,由child.py更改并发送回

回答 1 投票 0

如何使用管道在两个程序之间发送简单的字符串?

我尝试在网上搜索,但几乎没有任何资源。一个小例子就足够了。 编辑 我的意思是,两个不同的 C 程序相互通信。一个程序应该发送“Hi”...

回答 8 投票 0

管道传输时如何配置 git 输出?

我注意到如果你这样做 $ git diff -M --stat out_of_the_water/out_of_itself => he_watches_my_gauze_dress/blowing_on_the_line | 0 1 个文件已更改,0 个插入(+),0 个删除(-) 或者 $ git di...

回答 1 投票 0

从管道读取数据后程序不会停止

我想了解管道。我有一个小程序,它使用管道将消息从父进程发送到其子进程。孩子收到了所有 3 条消息,但没有退出,而是......

回答 2 投票 0

角度布尔管道是/否本地化

我需要一种方便的方法来让我的是-否管道像日期管道一样本地化 {{ 我的日期 |日期: '短' : 'UTC' : 'de-DE' }} 就像是 {{ my.boolean |是否:“de-DE”}} 而不是

回答 2 投票 0

在替换嵌套值时避免 cJSON 解析无限循环中的核心转储

我有一个 cJSON 树,其中保存了在 while 循环中生成的余弦的 x 和 y 值。 它看起来像这样: “myXY”:[{ “x”:2.0110001564025879, ...

回答 1 投票 0

如何在 shell 中将多个命令传输到单个命令中? (嘘,重击,...)

如何将多个命令的标准输出通过管道传输到单个命令? 示例 1:对所有三个 echo 命令的输出进行组合和排序: 回声 zzz;回声aaa;回声 kkk 期望的输出: 啊啊 KKK 兹兹

回答 3 投票 0

如何在 Angular 17 中注册自定义管道?

我刚刚创建了一个自定义 Pipe,通常我会在 app.module.ts 中注册它,但在 Angular 17 中我们没有该文件。我们现在如何注册? TIA 我正在考虑进口到进口...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.