Я весь день ищу пример программы на С ++, которая будет использовать готовый файл .exe, который имеет в качестве выходных строк, а затем ждет стандартного ввода и снова печатает выходные данные и так далее, и так далее.
Например, моя программа на С ++ будет использовать стандартный вывод для записи «uci» в программу .exe, программа .exe снова ответит строкой, которую я смогу прочитать в моей программе на С ++, и снова я отправлю новую строку и будет ждать ответа .exe.
Я нашел кое-что о каналах, но мне показалось, что их действительно трудно понять. Есть ли какая-нибудь готовая библиотека / интерфейс, который я мог бы использовать? Или какой-нибудь пример, который вы можете дать мне с трубами?
Если вы открываете для использования более крупные фреймворки, в Qt есть простой в использовании класс для обработки процессов: http://doc.qt.io/qt-5/qprocess.html.
QProcess exe;
exe.start("foo.exe");
exe.write("uci");
exe.waitForReadyRead();
auto result = exe.readAll();
В Windows вы можете использовать CreateProcess / CreatePipe, но код будет намного более подробным. Пример:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682499%28v=vs.85%29.aspx
Если вы просто знаете основы c ++, возможно, вы должны следовать этому, поскольку он не требует никаких внешних библиотек, хотя некоторые говорят, что система — это зло, это нормально, если она не идет на программы производственного уровня
int main()
{
std::string in;
while(std::cin >> in)
{
std::string cmd = std::string("/full/path/to/second.exe <") + in + " >outfile.txt";
system(cmd.c_str());
std::ifstream fin("outfile.txt");
std::cout << fin;
}
}