Делая exe-паузу - PullRequest
       1

Делая exe-паузу

0 голосов
/ 09 ноября 2011

Я использую main.exe для моей программы на C ++, которая в некоторых случаях вызывает другие исполняемые файлы.

Как сделать паузу в exe, пока не будет запущен другой exe?

Пример:

У меня есть exe-файл, который создает диалоговые окна для разных ситуаций (ошибка, неверный аргумент и т. Д.). Иногда я могу взять аргумент от пользователя, а иногда нет. Итак, пока я не возьму аргумент от пользователя, как заставить мой main.exe сделать паузу? Кроме того, я хочу арг в другом exe.

Итак, я должен использовать new для динамического хранения аргумента и передавать указатели в эту ячейку памяти в зависимости от того, где мне нужен аргумент? Делая это, я делаю утечку памяти? Я буду использовать delete после того, как моя потребность в этом аргументе закончится.

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

Вы можете использовать Boost (не могу вспомнить точное имя библиотеки) или можете использовать:

wait для * unix

и

WaitForSingleObject для Win.

Библиотека Boost фактически использует эти функции, если я не ошибаюсь.

1 голос
/ 09 ноября 2011

Чтобы сделать это в Windows, вам нужно порождать ваш процесс с помощью CreateProcess(), затем дождаться дескриптора, который возвращается в структуре PROCESS_INFORMATION, используя WaitForSingleObject.

Просто убедитесь, что CreateProcessзвонок успешен.Любые параметры могут быть переданы через командную строку или с помощью общей памяти или именованного канала, см. this для примера.

0 голосов
/ 09 ноября 2011

Самым простым решением будет функция system для выполнения других программ.В вашем main.exe вы бы написали:

system("other.exe");

Вы также можете передавать аргументы командной строки:

#include <stringstream>
...

std::stringstream ss;
ss << "other.exe" << " " << "first-arg" << " " << "second-arg";
system(ss.str().c_str());

Для этого нет необходимости выделять объекты с newно аргументы должны быть проанализированы в other.exe из argc и argv.Ваш main.exe будет приостановлен, пока other.exe не будет завершен.

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