2011-12-23 42 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