pipe 相关问题

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

如何使用 fork、pipe 和 dup 创建管道来连接两个子进程?

假设在一个程序中我想执行两个进程,一个执行 ls -al 命令,然后将结果通过管道传输到 wc 命令,并在终端上显示输出。我怎样才能做到这一点...

回答 2 投票 0

使用 Fork 和 Dup 的 Unix 管道

假设在一个程序中我想执行两个进程,一个执行 ls -al 命令,然后将结果通过管道传输到 wc 命令,并在终端上显示输出。我怎样才能做到这一点...

回答 2 投票 0

将 utc 日期时间转换为 Angular 本地时间

我得到这个日期时间格式 2023 年 11 月 18 日星期六 22:30:00 GMT+0530(印度标准时间) this.selectedDate = info.date; 我想将此日期时间转换为本地日期时间对象,但格式

回答 1 投票 0

使用 fork() 从父进程和子进程计算的总和在 C 中不正确

我希望就以下问题获得一些帮助。 因此,在子进程中我得到一个值 7,这证实了 for 循环之后的 printf 语句。 然而问题是,在发出令状后...

回答 1 投票 0

是否有一种基本管道方式使用列的唯一值从ggplot管道到实验室

问题相当简单 - 如果我采用 df 并对其执行一些过滤步骤,我希望能够将这些输出通过管道传输到 ggplot 函数中并使用特定的唯一值

回答 1 投票 0

来自 unix 管道的 Pip 安装参数

我打算创建一个脚本,能够使用 pip 在我的环境中安装一个单轮文件(.whl),但是文件轮文件的版本更改非常频繁。例如:现在文件名是 模拟...

回答 3 投票 0

Angular 升级到 16 后 - 错误 NG8004:找不到名称为“txtTranslate”的管道

我已将我的 Angular 应用程序从 Angular 15 更新到 16。 我遇到了一些节点包的编译错误,我解决了它们。 即使在 ng 服务之后仍然出现许多错误,如下所示 错误 NG8004:...

回答 1 投票 0

有没有办法阻止本机管道中的“View”在 RStudio 中生成新选项卡?

我已经适应在 R 和 RStudio 中使用新的本机管道。然而,当我直接通过管道进入视图时,它会创建一个独特的新选项卡,该选项卡一直弄乱了我的窗口。有没有办法限制...

回答 1 投票 0

隔离 Shell 脚本的标准输入范围

是否有机会隔离 shell 脚本的标准输入范围。例如。 脚本文件 #!/bin/sh echo "cat - | grep '.jpeg$'" |嘘 这样 sh 将通过管道传送到 echo(要执行的命令)stdout...

回答 1 投票 0

在`tail -f`中自动插入空行

有一个日志文件,例如: [调试][2016-06-24 11:10:10,064][DataSourceImpl] - [A 行...] [调试][2016-06-24 11:10:10,069][DataSourceImpl] - [B 行...] [调试][2016-06-24 11:10:12,112][数据源...

回答 3 投票 0

将数据通过管道传输到命令行 php?

可以使用unix管道将数据传输到命令行php脚本中吗?我试过了 $>数据| php 脚本.php 但预期的数据并没有出现在 $argv 中。有办法做到这一点吗?

回答 10 投票 0

来自 GCS 的expressJS 管道视频

我确信这个问题已经被问了一百万次,但我对以下脚本有问题。它在 Safari 浏览器中运行良好,但在 Firefox 或 Chrome 中则不行。 app.get('/stream', async (req, ...

回答 1 投票 0

如何在go和c#控制台应用程序之间建立长期管道连接

我有非常简单的 C# 控制台应用程序。这将是一个添加从 go 部分传递的双变量的过程。 双倍总和 = 0; 布尔标志=真; while(flag) { // 转换错误时退出...

回答 2 投票 0

通过终端将 cat 输出传送到 Java jar 中

我有一个需要使用标准输入的 JAR 文件。我需要使用这个命令并且无法更改它: 猫 文件名 | java -jar jar名.jar 我希望 JAR 能够以某种方式访问它,

回答 1 投票 0

无法从python执行命令提示符命令

无法直接从 python 执行 ffmpeg 命令,但是如果在命令提示符下使用它可以正常工作。 os.system("cmd /c ffmpeg -i video.mp4 -i sound.mp3 -c:v copy -filter_complex ...

回答 2 投票 0

C - 通过 execve 传递管道

我正在为学校做一个项目,我不确定我尝试解决这个问题的方式是否可行。该项目涉及制定一个程序,分叉 2 个孩子,然后必须替换...

回答 2 投票 0

fork()和pipe()

我需要此示例应用程序的帮助。当我运行它时,它在子进程打印“Child Sending!”后卡住了。 #包括 #包括 #包括 我需要此示例应用程序的帮助。当我运行它时,它在子进程打印“Child Sending!”后卡住了。 #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <stdlib.h> #include <string.h> #define INPUT 0 #define OUTPUT 1 int main() { int fd1[2]; int fd2[2]; int pid; if (pipe(fd1) < 0) exit(1); if (pipe(fd2) < 0) exit(1); if ((pid = fork()) < 0) { perror("fork"); exit(1); } else if (pid == 0) { close(fd1[INPUT]); close(fd2[OUTPUT]); char *str = "Hello World!"; printf("Child sending!\n"); write(fd1[OUTPUT], str, strlen(str)); char *bufferc = (char *)malloc(1000); char *readbufferc = (char *)malloc(80); int rdc; int gotdata = 0; while (gotdata == 0) while ((rdc = read(fd2[INPUT], readbufferc, sizeof(readbufferc))) > 0) { strncat(bufferc,readbufferc,rdc); gotdata = 1; } printf("Child received: %s",bufferc); free(readbufferc); free(bufferc); exit(0); } else { close(fd1[OUTPUT]); close(fd2[INPUT]); int rd; char *buffer = (char *)malloc(1000); char *readbuffer = (char *)malloc(80); int gd = 0; while (gd == 0) while ((rd = read(fd1[INPUT],readbuffer, sizeof(readbuffer))) > 0) { strncat(buffer, readbuffer,rd); gd = 1; } printf("Parent received: %s\n",buffer); free(readbuffer); printf("Parent sending!"); write(fd2[OUTPUT], buffer, strlen(buffer)); free(buffer); } return 0; } 顺便说一句,当我使用fork时,有没有办法进行调试,因为GDB会自动转到父进程? 子进程向父进程写入数据后,必须关闭管道的写入端,以便父进程知道它已达到 EOF。 您的代码中有很多错误。为什么使用 fd2 而不初始化它?去掉它。 现在它陷入了“子发送”状态,因为管道读取是一个阻塞调用,并且您将其放入一个永远不会返回的 while 循环中。请参阅管道的手册页。 如果您想中断 while 循环,请关闭该管道的所有写入端。 还要调试子进程,请在调试时调用 fork() 之前使用 gdb 命令 follow-fork-mode 作为子进程。 有几处错误: fd2 只是从未初始化过。 家长永远不会退出这个: while ((rd = read(fd1[INPUT],readbuffer, sizeof(readbuffer))) > 0) { strncat(buffer, readbuffer,rd); gd = 1; } 如果没有数据要读取,read将会阻塞并且不返回。唯一让它退出的是连接被关闭并且子进程没有关闭它。 您调用 read() 的期望是,如果没有任何内容可读取,它将返回读取的零字节。然而,您所看到的是因为 read() 在返回之前正在等待一些数据。要解决此问题,您需要执行以下两件事之一: 将套接字设置为执行非阻塞读取(不推荐) 读取之前先用select()或poll()查看是否有数据需要读取 还有其他几点: 不要投射 malloc() 的回报 检查 malloc() 是否不返回 NULL 将整个 gotdata 内容替换为 break 指令

回答 4 投票 0

如何从 Java 应用程序使用命令提示符命令

我正在尝试创建一个使用特定命令运行CMD的java程序 目录 C:\windows | java -jar C:\Column.jar 3 当我手动运行它时,但我无法从java运行它。 我有...

回答 1 投票 0

在cpp中执行python文件

我想在cpp中执行一个python文件,使其成为一个可以与我的其他子进程通信的进程。但是当我使用 execl("python3", "python3", "python/a1.py"...

回答 1 投票 0

Linux/C:添加 waitpid 后,带有子进程的进程都挂起

考虑下面的代码,它的作用是: 分叉一个孩子,创建一个管道。子进程会将标准输入重定向到管道,然后从标准输入(也称为从管道)读取。 ...

回答 1 投票 0

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