Ya itu. Pertama, buat pipa:mkfifo /tmp/fifo
.Gunakan gdb untuk melampirkan ke proses:gdb -p PID
Kemudian tutup stdin:call close (0)
; dan buka lagi:call open ("/tmp/fifo", 0600)
Terakhir, hapus (dari terminal lain, karena gdb mungkin akan hang):
echo blah > /tmp/fifo
Ketika terminal asli tidak lagi dapat diakses...
reptyr
mungkin yang Anda inginkan, lihat https://serverfault.com/a/284795/187998
Kutipan dari sana:
Lihat reptyr, yang melakukan hal itu. Halaman github memiliki semua informasi.
reptyr - Alat untuk program "re-ptying".
reptyr adalah utilitas untuk mengambil program yang sedang berjalan dan melampirkannya ke terminal baru. Memulai proses yang berjalan lama melalui ssh, tetapi harus keluar dan tidak ingin mengganggunya? Mulai saja layar, usereptyr untuk mengambilnya, lalu hentikan sesi ssh dan langsung menuju beranda.
PENGGUNAAN
reptyr PID
"reptyr PID" akan mengambil proses dengan id PID dan melampirkannya ke terminal Anda saat ini.
Setelah melampirkan, proses akan mengambil input dari dan menulis output ke terminal baru, termasuk ^C dan ^Z.(Sayangnya, jika Anda menjalankannya di latar belakang, Anda masih harus menjalankan "bg" atau "fg" di terminal lama. Ini kemungkinan besar tidak mungkin diperbaiki dengan cara yang masuk akal tanpa menambal cangkang Anda.)
Saya cukup yakin Anda tidak bisa.
Periksa menggunakan ps x
. Jika suatu proses memiliki ?
sebagai mengontrol tty , Anda tidak dapat mengirim masukan lagi.
9942 ? S 0:00 tail -F /var/log/messages
9947 pts/1 S 0:00 tail -F /var/log/messages
Dalam contoh ini, Anda dapat mengirimkan input ke 9947
melakukan sesuatu seperti echo "test" > /dev/pts/1
. Proses lainnya (9942
) tidak dapat dijangkau.
Lain kali, Anda dapat menggunakan screen atau tmux untuk menghindari situasi ini.