Взаимодействие с основанной на оболочке программой через переполнение стека

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

1) Я могу использовать «ожидать», чтобы сделать работу для меня.
2) Я могу использовать концепцию IPC и разделяемой памяти (с которой я знаком), чтобы сделать это.

Я был бы признателен, если кто-нибудь имеет представление о том, как эти два варианта работают или есть какие-либо другие предложения.

Спасибо

0

Решение

Одна вещь, которую я сделал, которая работала довольно хорошо, это использование socketpair() чтобы создать сокет, затем используйте fork + exec, чтобы запустить дочерний процесс с его stdin а также stdout перенаправлен на дальний конец пары. После этого вы просто подключаете удаленный процесс через двунаправленный сокет, что довольно стандартно (хотя вы должны помнить, чтобы правильно привести в порядок дочерний процесс).

0

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

Других решений пока нет …

По вопросам рекламы [email protected]