C ++: одновременный вызов более чем одного * .exe - PullRequest
0 голосов
/ 23 декабря 2011

Мне нужно вызвать кучу * .exe-файлов, чтобы я вызывал файл блокнота, где хранятся все полные пути всех * .exe-файлов, и с помощью этого файла блокнота (который можно редактировать) я хочуСоздайте родительский exe-файл, который вызывает список, в котором присутствуют пути всех дочерних * .exe

ТАКЖЕ, мне нужно инициировать вызов для всех * .exe «вместе», НЕ «по одному».Я хочу одновременный вызов всех exe, а не последовательный.

Заранее спасибо.

Я знаю много кодирования о системных вызовах:

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

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Не используйте sprint_s (или другое семейство форматных строк) в C ++.

Однако: одна из ваших ошибок в параметрах 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 ++ на складе.

1 голос
/ 23 декабря 2011

Если вы ориентируетесь только на Windows, вы можете использовать CreateProcess WinApi

(см. Пример использования здесь )

В Unix вы должны будете использовать fork () / exec () для достижения того же поведения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...