Запущенная программа C ++ .exe из Java не выводит и не получает ввод

Это должно быть что-то очень конкретное, потому что я попробовал все известные способы, уже описанные в нескольких местах.

У меня есть MinGW-скомпилированная программа C ++, которая начинается с:

int main(int argc, char* argv[])
{
if(argc!=2)
{
cout << "Sposób użycia: <1> <2>" << endl;
return -1;
}
...
}

В командной строке работает нормально — получает ввод, выводит, разрешает перенаправления канала.

В Java я попытался использовать Runtime # exec (), затем переключился на ProcessBuilder, но ни одна из них не работает. Процесс # getInputStream () всегда ничего не дает мне при запуске (или что-то подобное):

    ProcessBuilder pb = new ProcessBuilder("compiledCPP.exe");
Process p = pb.start();
InputStream is = p.getInputStream();
int value = -1;
while ((value = is.read()) != -1)
{
System.out.print((char) value);
}
p.waitFor();

Это должно по крайней мере дать мне сообщение, написанное в файле C ++ в 1-м куске кода.

Как мне это сделать?

РЕДАКТИРОВАТЬ: неразрешимой?

После того, как я попробовал каждую возможную комбинацию и прочитал о похожих вещах, связанных с in / out / err-stream, которые происходят между разными модулями компиляции (C ++ против Windows или 64bit / 32bit), я почти уверен, что эта проблема связана с некоторой несовместимостью mingw -произведенный .exe файл против Java, работающего на Windows. Кроме этого — та же самая установка, очевидно, работает на полностью настройке POSIX.

Если кто-нибудь когда-нибудь найдет, как это исправить — я буду рад это услышать (учтите, что проблема в win / mingw / java8 / c ++).

0

Решение

Может быть, вам нужно сначала включить перенаправление вывода?
Посмотреть здесь.

0

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

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

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