Запускать несколько команд одновременно в RootTools/RootShell?

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

RootTools (насколько я знаю) может одновременно открывать только одну корневую оболочку, поэтому команды могут выполняться только одна за другой. Это проблема, потому что у меня нет возможности остановить мой бинарный файл после того, как я его запустил.

Как я могу сделать любую из следующих вещей?

  • Выполните две команды одновременно, чтобы я мог запустить свою команду kill, когда исполняется двоичный файл
  • Отправить SIGINT в мой родной процесс другим способом (например, с помощью функции RootTools)

Мне нужно использовать RootTools, потому что для меня это единственный способ прочитать стандартный вывод из моей программы. Если есть другой способ сделать это, пожалуйста, прокомментируйте.

1 ответ

Как вы думаете, вы можете согласовать команды?

Допустим, я хочу запустить find команда, но если это займет 5 секунд, я хочу, чтобы это остановить:

find / & sleep 5 && kill $!

Мы также можем получить более подходящий вариант с одним вкладышем (то есть игнорировать стандартную ошибку, уничтожать только при необходимости и т. Д.).

Вы также можете просто сохранить PID и убить его позже (будьте осторожны, если демон перестал работать, его PID может быть повторно использован ОС):

  1. запустить демон в корневой оболочке

    my-daemon >/dev/null & echo "PID: $!"
    
  2. разобрать вывод в Java и сохранить PID (SharedPreferences?)

    var pid = outputLine.split(" ")[1]
    
  3. позже остановите демон с помощью корневой оболочки

    kill <pid>
    
Другие вопросы по тегам