Я сижу здесь, потому что, по крайней мере, всегда над проблемой, которая действительно побеждает меня!
Я пишу о простой и небольшой Java-программе, которая легко передает любую команду сеансу экрана (linux).
Shell command: bash -c "screen -p 0 -S sessionname -X eval 'stuff \"some command\"\015'"
Когда я ввожу это в командной оболочке, все работает нормально!
Но если я позволю Java-программе сделать это, ничего не произойдет! Даже не сообщение или ошибка или подсказка! Просто ничего!
Я позволил программе повторить сгенерированную экранную команду, и если я возьму этот вывод и вставлю его в оболочку, он будет работать.
Вот мой код Java:
static public void screenCmd() throws IOException
{
String command = "bash -c \"screen -p 0 -S screenname -X eval 'stuff \\\"cmd\\\"\\015'\"";
System.out.println("debug: '" + command + "'"); //output would work
//when copy and paste it to the shell
InputStreamReader isr = new InputStreamReader(
Runtime.getRuntime().exec(command).getInputStream()
);
//for debug output
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null)
System.out.println(line);
}
Самое смешное, что все остальные команды оболочки работают.
Я пробовал Java на exec tail, whoi, cp, ls, ... без проблем. Почему не экран?
Java-программа запускается тем же пользователем, который начал сеанс экрана.
Если у кого-то есть хоть маленькая идея, пожалуйста, сообщите! Я схожу с ума здесь!
p.s .: Сеанс экрана также запускает Java-программу! (это может быть частью проблемы?)
Спасибо.