Я пытаюсь записать в stdin запущенного процесса, который уже запущен. Запись в sdtin во время запуска процесса работает:
Внешний скрипт 1. sh:
#!/bin/sh
echo "Started at $(date)"
read a
echo "$(date): got '$a'"
Код в плагине:
ProcStarter proc = launcher.launch().stderr(listener.getLogger()).stdout(listener.getLogger()).cmds("/tmp/1.sh");
ByteArrayInputStream res = new ByteArrayInputStream(("hellooo" + System.lineSeparator()).getBytes(StandardCharsets.UTF_8));
proc.stdin(res).join();
Вывод в консоль jenkins, та же отметка времени начала и запись в sdtin:
$ /tmp/1.sh
Started at Thu Apr 2 10:52:02 CEST 2020
Thu Apr 2 10:52:02 CEST 2020: got 'hellooo'
Я хочу писать в sdtin не во время запуска, но через x секунд, что-то вроде этого псевдокода:
ProcStarter proc = launcher.launch().stderr(listener.getLogger()).stdout(listener.getLogger()).cmds("/tmp/1.sh");
proc.join(); //blocks
//somewhere in another Thread:
Thread.sleep(15000);//pseudocode ;-)
ByteArrayInputStream res = new ByteArrayInputStream(("hellooo" + System.lineSeparator()).getBytes(StandardCharsets.UTF_8));
proc.stdin(res); // doesn't work
Использование hudson.Launcher.ProcStarter необходимо из-за выполнения на подчиненных устройствах jenkins. Есть какие-нибудь идеи, как мне написать в stdin процесса запуска alredy?