【问题标题】:C++ : Simultaneously calling more than one *.exeC++:同时调用多个 *.exe
【发布时间】:2011-12-23 10:51:13
【问题描述】:

我需要调用一堆 *.exe,以便我调用一个记事本文件,其中存储了所有要调用的 *.exe 的所有完整路径,并使用我想要的记事本文件(可以编辑)创建一个父 exe,它调用一个列表,其中所有子 *.exe 的路径都存在

另外, 我需要发起对所有 *.exe 的“一起”而不是“一个一个”的调用。我想要同时调用所有 exe,而不是顺序调用。

提前致谢。

我知道这么多关于系统调用的编码:

#include<stdlib.h>
char * command;
sprintf_s("d:\\....path..%d.\\..%d",n,ctr);
system(command);

【问题讨论】:

标签: c++ visual-studio visual-c++


【解决方案1】:

如果你只针对 Windows,你可以使用 CreateProcess WinApi

(参见示例用法here

在 Unix 上,你必须使用 fork()/exec() 来实现相同的行为

【讨论】:

  • 我需要像完全二叉树一样递归调用它
  • 不明白,recusively 是什么意思?请用更具体的例子来加强你的问题。
【解决方案2】:

不要在 C++ 中使用 sprint_s(或其他格式字符串系列)。

但是:您的错误之一是在sprintf_s 的参数中:

int sprintf_s(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format [,
      argument] ... 
);

Microsoft 示例:

// crt_sprintf_s.c
// This program uses sprintf_s to format various
// data and place them in the string named buffer.
//

#include <stdio.h>

int main( void )
{
   char  buffer[200], s[] = "computer", c = 'l';
   int   i = 35, j;
   float fp = 1.7320534f;

   // Format and print various data: 
   j  = sprintf_s( buffer, 200,     "   String:    %s\n", s );
   j += sprintf_s( buffer + j, 200 - j, "   Character: %c\n", c );
   j += sprintf_s( buffer + j, 200 - j, "   Integer:   %d\n", i );
   j += sprintf_s( buffer + j, 200 - j, "   Real:      %f\n", fp );

   printf_s( "Output:\n%s\ncharacter count = %d\n", buffer, j );
}

另请注意,这是 Microsoft 扩展。使用不同的编译器编译相同的程序可能会失败。

但是说真的,根本不要使用这些,只要这样做:

std::stringstream ss;
ss << "d:/foobar.exe " << arg1 << ' ' << arg2;
const std::string command = ss.str();

更严肃的一点是:获取一本好的 C++ 入门书籍,当你的仓库中有 C++ 时,不要编写 C。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多