Как открыть оболочку эмулятора из кода Java для определения событий системных вызовов?
Я хочу собирать события системных вызовов для приложений Android с помощью инструмента strace. Сначала я запускаю эмулятор ланча, затем пишу в терминал в linux следующую командную строку:
adb -s emulator-5554 shell
После эмулятора оболочки я хочу написать команду strace, как показано на рисунке:
из trminal это прекрасно работает со мной, но когда я пишу код Java
Process p=Runtime.getRuntime().exec("adb -s emulator-5554 shell");
Process p1=Runtime.getRuntime().exec("strace -p 871");
Это не сработало, может ли кто-нибудь помочь мне написать этот код Java в затмении, пожалуйста, обратите внимание на картинку
1 ответ
Решение
adb shell
Команда открывает новую оболочку, в которой strace
выполнен. Java-версия вашей команды выполнила обе команды в оболочке по умолчанию. Следовательно, вы должны объединить их:
Process p=Runtime.getRuntime().exec("adb -s emulator-5554 shell strace -p 871");