用 c++ 包装可执行文件的输入和输出

Wrapping executable's input and output in c++

本文关键字:输入 输出 可执行文件 c++ 包装      更新时间:2023-10-16

在java中有一个程序(Minecraft),对于它的服务器部分,它在终端中打开并提示用户执行命令,以及为加载进度和其他东西提供反馈。如何制作一个c++"包装器"来自动向终端发送命令,并接收响应?

我可以使用GUI元素自动执行say和kick等命令。

大概是读写标准输入/标准输出。您应该查找在c++中执行二进制文件(在本例中为java.exe)以及如何读取和写入它。或者,您可以用Java编写一个包装器,使您不必解析文本输出就可以进行控制。

这个问题的答案取决于操作系统,因为不同的系统使用不同的方法来处理标准输入和输出通道。在UNIX系统上,您将创建一个管道(2)(如果您想分别捕获标准输出和标准错误,则可以创建两个管道),fork(2)"服务器",使用close(2)和dup(2)将各种文件描述符放入适当的位置,然后执行(2)实际的程序。在此之后,您可以读写各种描述符。