2011-12-23 68 views
0

我需要调用一堆* .exe文件,这样我才能调用一个记事本文件,其中所有* .exe的全部路径将被调用,并使用该记事本文件(可以编辑)我想要创建一个父exe文件,它调用一个列表,其中包含所有子* .exe文件的路径C++:同时调用多个* .exe

ALSO, 我需要启动对所有* .exe的“一起”调用NOT “逐个”。我想同时调用所有的exe,而不是顺序的。

在此先感谢。

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

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

太棒了!什么是问题? – 2011-12-23 10:53:44

+0

什么操作系统? – 2011-12-23 10:57:33

+0

从运行所有必需的exe的C++执行一个脚本(批处理/ shell)。 – Arunmu 2011-12-23 10:59:52

回答

1

如果您只面向Windows,你可以使用CreateProcess WINAPI

(见用法的例子here

在类Unix您将不得不使用fork()/ exec()来实现相同的行为

+0

我需要像递归调用它像一个完整的二叉树 – KB2807 2011-12-26 09:15:27

+0

我不明白它,你是什么意思通过recusively?请用更具体的例子来增强您的问题。 – gastush 2011-12-26 11:05:34

1

请勿使用sprint_s(或其他格式字符串系列)。

不过:你的一个错误是在参数sprintf_s

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

例由微软:

// 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); 
} 

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

但严重的是,不要使用那些在所有的,只是做:

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

在一个更严重的是:找一个很好的入门C++的书,也不要节目C,当你有C++中你的仓库。

+0

对于C++书籍建议+1 – 2011-12-23 13:37:13