Я пытаюсь написать программу на C ++, в которой она может взаимодействовать с другой программой на основе оболочки (коммерческим инструментом), отправлять команды и получать от нее результаты.
Я слышал о нескольких вариантах, и я хочу знать преимущества / недостатки каждого из них.
1) Я могу использовать «ожидать», чтобы сделать работу для меня.
2) Я могу использовать концепцию IPC и разделяемой памяти (с которой я знаком), чтобы сделать это.
Я был бы признателен, если кто-нибудь имеет представление о том, как эти два варианта работают или есть какие-либо другие предложения.
Спасибо
Одна вещь, которую я сделал, которая работала довольно хорошо, это использование socketpair()
чтобы создать сокет, затем используйте fork + exec, чтобы запустить дочерний процесс с его stdin
а также stdout
перенаправлен на дальний конец пары. После этого вы просто подключаете удаленный процесс через двунаправленный сокет, что довольно стандартно (хотя вы должны помнить, чтобы правильно привести в порядок дочерний процесс).
Других решений пока нет …