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?


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.


3
Itu luar biasa.
Matius Baca

5

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


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


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.


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;)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.