2014-02-16 5 views
1

У меня есть Java-программа, которая должна запускать интерактивную программу C с интерфейсом командной строки на переднем плане. Мне нужно, чтобы это работало как в Windows, так и в Linux.Как запустить интерактивную программу интерфейса командной строки из Java?

В Windows все работает нормально. Я могу запустить свою программу на переднем плане с cmd следующим образом:

command = "cmd /c start \"My_C_Program\" /MAX /WAIT My_C_Program "; 
theProcess = Runtime.getRuntime().exec(command); 

В Linux, я не могу сделать то же самое с /bin/bash. Независимо от того, что я стараюсь, процесс всегда работает в фоновом режиме:

String[] commands = { "/bin/bash", "-c", "./My_C_Program" }; 
theProcess = Runtime.getRuntime().exec(commands); 

Я знаю, что я могу получить выход из фонового процесса, но это бесполезно, так как программа является интерактивной.

Любая помощь была бы принята с благодарностью. Даже сложные обходные пути :)

+2

'bash' - это оболочка не оконная программа, попробуйте с помощью' xterm' или что-то окно –

+0

@RC. Благодарю. Это была проблема. – Ahmad

ответ

0

Вы можете попробовать это вместо:

String[] commands = { "gnome-terminal", "-x", "-c", "./My_C_Program" }; 
theProcess = Runtime.getRuntime().exec(commands); 

Не уверен, что он будет работать. Не пробовал.

Возможно, у вас нет gnome-terminal, но что-то еще, как x-term. Это должно быть почти то же самое.

+0

Спасибо. Это была проблема. – Ahmad