Bagaimana mencegah adb shell keluar saat Ctrl + C

11

Ketika saya adb shellmasuk ke perangkat saya (dari desktop Windows), dan menjalankan beberapa perintah di sana, kadang-kadang saya ingin menghentikan perintah itu. Cara unixy standar untuk melakukannya adalah dengan Ctrl+Ckombinasi tombol. Namun, ketika saya melakukan itu, semuanya adb shellberakhir.

Bagaimana saya bisa menghentikan hanya program saat ini di dalam shell, bukan shell itu sendiri?

haim
sumber
Saya membaca posting forum yang mengklaim bahwa <kbd> Ctrl </kbd> + <kbd>] </kbd> bekerja, tetapi saya mencobanya tanpa hasil. Jarak tempuh Anda mungkin beragam. Tampaknya tidak ada cara untuk mengaktifkan adb lewat Ctrl-C, karena tidak menangkap SIGINT. Metode Ctrl-V standar tampaknya tidak berfungsi untuk Ctrl-C, meskipun itu mengkonversi Enter ^J, sayangnya.
Matius Baca

Jawaban:

13

Saya menemukan semacam solusi untuk ini (setidaknya untuk ponsel yang di-root). Jika ponsel di-root, busyboxkemungkinan besar sudah diinstal. sttyadalah bagian dari busybox.

stty intr ^ x

Mendefinisikan ulang Ctrl+ Xuntuk bertindak sebagai perintah break, misalnya apa yang sebelumnya Ctrl+ C.

haim
sumber
3
Itu luar biasa.
Matius Baca
5

Alt- NumPad 3+ Enterbekerja untuk saya. Alt- NumPad 0- NumPad 3+ Enterjuga berfungsi dan menampilkan "^ C".

Christian d'Heureuse
sumber
3

saya bisa menghentikan topproses dan tetap tinggal di shell dengan mengetik berikut ini dalam urutan ini:

C

CTRL+Z

CTRL+M

jika saya tidak mengetik semua 3 kombo itu tidak akan berhenti dan saya harus CTRL+ Cuntuk keluar dari shell. Saya menemukan ini hanya dengan mencoba kombinasi tombol yang berbeda dan menemukannya secara tidak sengaja. YMMV

Ryan Conrad
sumber
Ctrl + Z menunda proses, misalnya Anda harus membunuhnya nanti dengan kill atau killall. Penanganan masalah ini lebih baik daripada tidak sama sekali ...
haimg
Saya menyadari bahwa setelah ketika saya melakukan "keluar". lucunya, bukan ctrl + z yang melakukan apa-apa, sebenarnya tidak kembali ke shell sampai saya melakukan ctrl + m, dan jika saya tidak mengetikkan "c" pertama, itu tidak melakukan apa-apa.
Ryan Conrad
Ini tidak berhasil untuk saya (saya mencoba vmstattidak top). Menariknya, ketika saya menekan Ctrl-Zitu terlihat seperti tidak ada yang terjadi namun pada kenyataannya masukan mulai saya sedang diarahkan langsung ke Windows shell dan tidak adb. Output adb (dari vmstat) terus muncul di jendela shell tapi saya bisa mengetik cd C:(misalnya) dan itu akan dieksekusi di shell Windows. Jika saya kemudian menekan Ctrl-Coutput akan berhenti dan saya akan melihat perintah yang saya ketik di shell Windows di belakang layar. Sangat aneh!
Matius Baca
3

Ctrl+ \diikuti oleh Enterbiasanya berfungsi dengan baik.

Ini akan mengirimkan sinyal SIGQUIT yang mungkin tidak sesuai untuk server (contohnya dump file inti) tapi saya pikir itu bukan masalah menggunakan ini di ponsel / tablet Android (yang tidak membuang file inti secara default ). Solusi mudah yang berfungsi dalam banyak kasus.

dazweeja
sumber
3

Di Windows, Anda bisa memasukkan [Alt] + [3] melalui numpad (jangan lupa untuk menekan enter sesudahnya).
Ini mengirimkan [Ctrl] + [c] ke shell dengan demikian mengakhiri perintah saat ini:

D: \ Android> adb shell
$ kucing
kucing
♥
^ C

$ keluar
keluar

D: \ Android>

Perhatikan bahwa [Alt] + [3] menghasilkan ASCII-Char ♥ di Windows yang sama dengan ETX-Byte.
Anda juga dapat menekan [Alt] + [0] - [3] (tahan tombol Alt ke bawah sambil menekan [0] dan [3] pada numpad) jika Anda tidak menggunakan jendela untuk menampilkan hati;)

Dralnaw
sumber