使用其他程序将参数传递给程序

时间:2012-11-24 17:11:09

标签: c++ createprocess

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

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

3 个答案:

答案 0 :(得分:0)

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

您对非静态输入有什么问题?

答案 1 :(得分:0)

我通常使用system(const char*),它适用于我:)

在命令行中键入命令时,会传递包含该命令的字符串。在你的情况下,它表示exe文件的路径和它所采用的参数,中间只有空格。它运行指定的进程,就好像它是从命令行运行一样。

有关详细信息:http://www.cplusplus.com/reference/cstdlib/system/

答案 2 :(得分:0)

听起来好像你已经明白字符串参数可以在发布时通过CreateProcess发送。如果要在运行时继续发送数据,可以选择几种方法。

  1. 使用控制台重定向。由于您已经在使用Win32 API,因此在启动它之后写入子进程的cin并不是一件容易的事。见this MSDN article。我认为这可能是“通过CLI动态输入”的意思

  2. 使用某种IPC。有Win32方法可以执行此操作,例如message queues,以及更多与平台无关的方法,例如Protocol BuffersThriftBoost.Interprocess

  3. 当涉及到IPC时,实际上有一种方法可以让猫皮肤变色,你的目标是进行研究并确保在早期就流程的沟通方式做出正确的设计决策。

    如果您决定使用更全面的IPC而不是像控制台重定向那样来解决一个小问题,那么您应该问自己的一些问题是:

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

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

    • 将来如何维持这种可行性?
    • 此代码是否必须在另一个平台上运行?

    希望这个回答对你的问题来说并不过分。