Перенаправление содержимого программы C ++ в cmd.exe - PullRequest
0 голосов
/ 15 мая 2018

Мне необходимо вызывать служебную программу (special.exe) тысячи раз с определенными параметрами, которые определяются из моей программы на C ++.

В настоящее время я использую CreateProcess() для запуска служебной программы (special.exe) и использую дескрипторы канала для получения результатов. Это внутри цикла. Так что, по сути, моя программа несет огромные накладные расходы, поскольку она создает и уничтожает тысячи дочерних процессов.

Псевдокод (в настоящее время):

for(i=0; i<n; i++)
{ 
    i) set all necessary attr for createprocess()
    ii) str = "D:\\special.exe " + to_string(i)
   iii) CreateProcess(NULL, str(), ...)
    iv) collect back results
    iv) close all handles
}

Теперь я собираюсь использовать CreateProcess(), чтобы открыть cmd.exe один раз, а затем запустить утилиту (special.exe) оттуда, как и когда это необходимо. Я хочу знать, есть ли способ передать строки из моей основной C ++ программы в дочерний cmd.exe процесс.

Псевдокод (намерение):

i) set all necessary attr for createprocess
ii) CreateProcess(NULL, "cmd.exe", ...)

for(i=0;i<n; i++)
{
    iii) str = "special.exe " + to_string(i)
    iv) pass str to cmd.exe process and execute
    v) collect back results
}
vi) close all handle

Я думаю, что это может быть более быстрый подход, так как он имеет дело с меньшими созданиями процессов.

Правильно ли это мышление? И возможно ли это? Пожалуйста, поделитесь своими мыслями и примерами кодов, если это возможно.

Спасибо!

...