Запускать несколько команд одновременно в RootTools/RootShell?
Я использую библиотеку RootTools, и мне нужно выполнить две команды. Первый запускает двоичный файл, второй отправляет SIGINT, чтобы убить его.
RootTools (насколько я знаю) может одновременно открывать только одну корневую оболочку, поэтому команды могут выполняться только одна за другой. Это проблема, потому что у меня нет возможности остановить мой бинарный файл после того, как я его запустил.
Как я могу сделать любую из следующих вещей?
- Выполните две команды одновременно, чтобы я мог запустить свою команду kill, когда исполняется двоичный файл
- Отправить SIGINT в мой родной процесс другим способом (например, с помощью функции RootTools)
Мне нужно использовать RootTools, потому что для меня это единственный способ прочитать стандартный вывод из моей программы. Если есть другой способ сделать это, пожалуйста, прокомментируйте.
1 ответ
Как вы думаете, вы можете согласовать команды?
Допустим, я хочу запустить find
команда, но если это займет 5 секунд, я хочу, чтобы это остановить:
find / & sleep 5 && kill $!
Мы также можем получить более подходящий вариант с одним вкладышем (то есть игнорировать стандартную ошибку, уничтожать только при необходимости и т. Д.).
Вы также можете просто сохранить PID и убить его позже (будьте осторожны, если демон перестал работать, его PID может быть повторно использован ОС):
запустить демон в корневой оболочке
my-daemon >/dev/null & echo "PID: $!"
разобрать вывод в Java и сохранить PID (
SharedPreferences
?)var pid = outputLine.split(" ")[1]
позже остановите демон с помощью корневой оболочки
kill <pid>