Передача аргументов в программу с использованием другой программы

Я создал два исполняемых файла, которые принимают аргументы командной строки. Теперь я хочу передать аргументы доступным исполняемым файлам с помощью C ++ (выполнение в Windows). Каков наилучший способ сделать это?

я использовал CreateProcess(); он работает нормально для статического ввода, но я хочу вводить динамически через CLI.

1

Решение

Командная строка (с аргументами) является одним из параметров CreateProcess (). Просто поместите туда любые аргументы, которые вы хотите передать дочернему исполняемому файлу.

Какие у вас проблемы с нестатическим вводом?

0

Другие решения

Я обычно использую system(const char*) и это работает для меня 🙂

Вы передаете строку, которая содержит команду, когда вы вводите ее в командной строке. В вашем случае это означает путь к исполняемому файлу и принятые аргументы с пробелами между ними. Он запускает указанный процесс, как если бы он был запущен из командной строки.

Для дополнительной информации: http://www.cplusplus.com/reference/cstdlib/system/

0

Похоже, вы уже понимаете, что строковые аргументы могут быть отправлены через CreateProcess во время запуска. Если вы хотите продолжить отправку данных во время выполнения, у вас есть несколько вариантов.

  1. Используйте перенаправление консоли. Поскольку вы уже используете Win32 API, не так уж и сложно писать в cin дочернего процесса после его запуска. Увидеть эта статья MSDN. Я думаю, что это может быть то, что вы подразумеваете под «ввод динамически через CLI«

  2. Используйте какой-то IPC. Есть Win32 способы сделать это, такие как очереди сообщений, и более независимые от платформы методы, такие как Буферы протокола, бережливость, или же Boost.Interprocess.

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

Если вы решили использовать более полнофункциональный IPC, а не что-то вроде перенаправления консоли, чтобы решить небольшую проблему, вам следует задать себе несколько вопросов:

  • Смогу ли я отправлять все типы данных, используя этот тип IPC?
  • Будет ли это общение когда-либо пересекать границы сети?

И два больших вопроса, которые всегда появляются:

  • Насколько ремонтопригодны это будет в будущем?
  • Придется ли когда-нибудь запускать этот код на другой платформе?

Надеюсь, что этот ответ не является чрезмерным для вашего вопроса.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector