Я создаю приложение для Android, которое запускает процесс, вызывая su и отправляя ему команду, следующим образом:
Process su = Runtime.getRuntime().exec( "su" );
DataOutputStream out = new DataOutputStream( su.getOutputStream() );
out.writeChars( "pppd /dev/pts/0" );
out.flush();
Когда я хочу остановить службу и завершить процесс pppd, я в настоящее время запускаю busybox killall pppd
- su
, как при первоначальном вызове pppd. Простой вызов su.destroy()
не выполняется, даже если я использую pppd /dev/pts/0 nodetach
в первом вызове, что не позволяет pppd разветвляться и создавать фоновый процесс. killall
работает, но может сломать другие приложения, использующие pppd.
Я бы очень предпочел скальпель, который позволял бы мне напрямую исключить процесс pppd, но, кроме запуска ps
, поиска по PID и вызова kill
, похоже, не найдется достойного решения.
Есть ли достаточно чистый способ убить процесс, который был запущен через su
на Android?