gpt4 book ai didi

c++ - 将程序 A 的输出重定向到程序 B 的输入,反之亦然

转载 作者:行者123 更新时间:2023-11-30 03:42:16 24 4
gpt4 key购买 nike

我知道有一种方法可以通过使用 fork 并以某种方式制作管道在 C 中对此进行编程(我知道有一种方法,但我不记得如何去做)。

预期用途是将服务器的输出(我将使用 netcat 获得)连接到我自己的 c++ 程序,该程序将处理所述输出并将其归还给 netcat。我不知道如何在 C++ 中直接连接(套接字是神秘的生物),我想避免安装 boost,因为它应该在或多或少的 Vanilla 系统中编译。

那么,有没有办法在 bash 中使用 bash 将一个程序的输出重定向到另一个程序的输入,并将第二个程序的输出重定向到第一个程序的输入?

最佳答案

有了 netcat 实现,您就已经拥有了所需的东西。假设您的客户端名为 /path/to/client,您希望在端口 1234 连接到 service.example.com

要么您的 netcat 类似于 nmap 中的 ncat,那么您可以:

ncat -c ``/path/to/client`` service.example.com 1234

如果你的 netcat 更简约,你必须使用管道:

mkdir pipes
cd pipes
mkfifo reverse_pipe
/path/to/client < reverse_pipe | nc service.example.com 1234 > reverse_pipe

mkfifo 在文件系统中创建命名管道。它看起来像一个文件,但实际上不是(如果您使用 ls -l 查看,您会注意到它的模式以 p 开头,而不是 - 对于普通文件)。这就像 foo | bar 有,但它有一个文件名,并且没有被任何进程打开。

通过将其作为输入/输出传递给进程,您可以手动连接两个命令(也就是说,没有 shell 魔术,例如 |)。写入管道的数据不存储在文件系统中,但可用于从管道读取的进程。写入的数据只会被读取一次。它的工作方式与 shell 中的管道完全一样,只是它在文件系统中有一个名称。

关于c++ - 将程序 A 的输出重定向到程序 B 的输入,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36908645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com