C ++:同时调用多个* .exe

时间:2011-12-23 10:51:13

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

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

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

提前致谢。

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

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

2 个答案:

答案 0 :(得分:1)

如果您只定位Windows,则可以使用CreateProcess WinApi

(请参阅示例用法here

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

答案 1 :(得分:1)

请勿在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程序。