Як запобігти появі оболонки adb на Ctrl + C


11

Коли я adb shellзаходжу на свій пристрій (з робочого столу Windows) і виконую там якусь команду, іноді я хочу скасувати цю команду. Стандартний універсальний спосіб зробити це за допомогою Ctrl+Cкомбінації клавіш. Однак коли я це роблю, ціле adb shellприпиняється.

Як я можу припинити лише поточну програму всередині оболонки, а не саму оболонку?


Я прочитав пост на форумі, у якому стверджувався, що <kbd> Ctrl </kbd> + <kbd>] </kbd> працював, але я спробував це не пощастило. Ваш пробіг може відрізнятися. Здається, немає можливості включити adb-пропуск Ctrl-C, оскільки він не захоплює SIGINT. Стандартний метод Ctrl-V , схоже, не працює для Ctrl-C, хоча ^J, на жаль , він конвертував Enter .
Матвій

Відповіді:


13

Я знайшов щось для цього (хоча б для вкоріненого телефону). Якщо телефон укорінений, busyboxшвидше за все, він встановлений. sttyє частиною zasedbox.

stty intr ^ x

Перевизначає Ctrl+, Xщоб діяти як команда перерви, наприклад те, що було раніше Ctrl+ C.


3
Це досить приголомшливо.
Матвій


3

мені вдалося зупинити topпроцес і досі залишатися в оболонці, ввівши в цьому порядку наступне:

C

CTRL+Z

CTRL+M

якби я не ввів усі 3 комбо, він не зупинився, і мені доведеться CTRL+ Cвийти з оболонки. Я виявив це, просто спробувавши різні комбінації клавіш і знайшов це випадково. YMMV


Ctrl + Z призупиняє процес, наприклад, вам доведеться пізніше вбити його за допомогою kill або killall. Таке рішення краще, ніж нічого, хоча ...
haimg

Я зрозумів, що після, коли я зробив "вихід". дивна річ, це не було ctrl + z, що робило що-небудь, воно насправді не поверталося до оболонки, поки я не зробив ctrl + m, і якщо я не ввів "c" спочатку, він нічого не зробив.
Райан Конрад

Це не працює для мене (я намагався vmstatне topхоч). Цікаво, що коли я натискаю, Ctrl-Zце здається, що нічого не відбувається, але насправді моє введення починає перенаправлятися прямо на оболонку Windows, а не на adb. Вихід adb (від vmstat) постійно відображається у вікні оболонки, але я міг набрати cd C:(наприклад), і він буде виконуватися в оболонці Windows. Якщо я тоді натиснув, Ctrl-Cвихід зупинився б і я побачив би команду, яку я вписав у оболонку Windows позаду. Дуже дивно!
Матвій

3

Ctrl+ \слідом за цим Enterзазвичай добре працює.

Це надішле сигнал SIGQUIT, який може не підходити для сервера (скидає основний файл, наприклад), але я не думаю, що це проблема з використанням цього телефону на телефоні / планшеті Android (який не скидає основний файл за замовчуванням ). Просте рішення, яке працює в більшості випадків.


3

У Windows ви можете просто ввести [Alt] + [3] через numpad (не забудьте потім натиснути клавішу Enter).
Це посилає [Ctrl] + [c] до оболонки, тим самим закінчуючи поточну команду:

D: \ Android> оболонка adb
$ кіт
кіт
♥
^ С

$ вихід
вихід

D: \ Android>

Зауважте, що [Alt] + [3] виробляє ASCII-Char ♥ у Windows, що дорівнює ETX-байт.
Ви також можете натиснути [Alt] + [0] - [3] (утримуючи клавішу Alt, натискаючи [0] і [3] на цифровій клавіатурі), якщо ви не кладете на вікна, щоб відобразити серце;)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.