Я пытаюсь совместить SWI-prolog с QProcess. Так что я уже могу взаимодействовать с прологом и отправлять ему вопросы, но всегда получаю только первый ответ. Поэтому я попытался отправить такие символы, как «n» или «r», которые должны дать мне следующий ответ на мой запрос, как в оболочке. Однако это не работает с QProcess. Вот мой код:
connect(&p,SIGNAL(readyReadStandardError()),this,SLOT(readStdError()));
connect(&p,SIGNAL(readyReadStandardOutput()),this,SLOT(readStdOut()));
p.setProcessChannelMode(QProcess::MergedChannels);
p.start("swipl",QIODevice::ReadWrite | QIODevice::Unbuffered);
if(!p.waitForStarted())
return;
p.write("consult(ws).\r\n"); //prolog program
if(!p.waitForBytesWritten())
{
p.close();
return;
}
p.write("test(X,Y).\r\n"); //query
if(!p.waitForBytesWritten())
{
p.close();
return;
}
p.write("n",1); //give me the next solution -> nothing happens
Я больше не знаю, что делать. Как я могу получить следующие ответы или как я могу сказать Prolog, чтобы показать мне все ответы?