Если я правильно понимаю ваш вопрос, вы хотите, чтобы ваша программа могла запускать дочерний процесс (в данном случае программу командной строки SQL), а затем иметь возможность читать текст, который она получает от дочернего процесса stdout
и / или stderr
, и записать текст в stdin
дочернего процесса, так же, как если бы пользователь / она выполнял эту программу в интерактивном режиме.
Ответ - да, возможночтобы сделать это, хотя это требует некоторой работы.В Linux / Unix / MacOSX вы можете вызвать forkpty () для порождения дочернего процесса - родительский процесс получит сокет (через первый аргумент forkpty
), который вы можете использовать для связи сstdin и stdout дочернего процесса.В дочернем процессе вы можете затем вызвать execvp (или один из его вариантов), чтобы запустить программу SQL в этом процессе;
В Windows это немного сложнее - вы 'Потребуется настроить некоторые каналы, а затем вызвать CreateProcess (), чтобы запустить дочерний процесс и связаться с ним через эти каналы.У Microsoft есть страница по теме (включая пример кода) здесь .