Мне необходимо вызывать служебную программу (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
Я думаю, что это может быть более быстрый подход, так как он имеет дело с меньшими созданиями процессов.
Правильно ли это мышление? И возможно ли это? Пожалуйста, поделитесь своими мыслями и примерами кодов, если это возможно.
Спасибо!