1

我创建了两个接受命令行参数的可执行文件。现在,我想使用 C++(在 Windows 上执行)将参数传递给可用的可执行文件。最好的方法是什么?

我用过 CreateProcess();它适用于静态输入,但我想通过 CLI 动态输入。

4

3 回答 3

0

我通常使用system(const char*)它,它对我有用:)

当您在命令行中键入它时,您会传递一个包含命令的字符串。在您的情况下,这意味着 exe 文件的路径和它所采用的参数,两者之间只有空格。它运行指定的进程,就好像它是从命令行运行的一样。

欲了解更多信息:http ://www.cplusplus.com/reference/cstdlib/system/

于 2012-11-24T17:28:35.037 回答
0

命令行(带参数)是 CreateProcess() 的参数之一。只需将您想要传递给子可执行文件的任何参数放在那里。

非静态输入有什么问题?

于 2012-11-24T17:14:43.870 回答
0

CreateProcess听起来好像您已经了解可以在启动时发送字符串参数。如果您想在运行时继续发送数据,您有几个选择。

  1. 使用控制台重定向。由于您已经在使用 Win32 API,因此在启动子进程后写入子进程的 cin 并不太难。请参阅此 MSDN 文章。我认为这可能是您所说的“通过 CLI 动态输入”的意思

  2. 使用某种IPC。有 Win32 方法可以做到这一点,例如消息队列,以及更多独立于平台的方法,例如Protocol BuffersThriftBoost.Interprocess

在 IPC 方面,实际上有不止一种方法可以给猫剥皮,您的目标是进行研究并确保您在早期就流程的通信方式做出正确的设计决策。

如果您决定使用更成熟的 IPC 而不是控制台重定向之类的东西来解决较小的问题,您应该问自己的一些问题是:

  • 我可以使用这种类型的 IPC 发送所有类型的数据吗?
  • 这种通信是否需要跨越网络边界?

而且,总是出现的两个大问题是:

  • 这在未来的可维护性如何?
  • 这段代码是否必须在另一个平台上运行?

希望这个回答对您的问题不会过分。

于 2012-11-24T18:24:41.113 回答