はい、そうです。まず、パイプを作成します:mkfifo /tmp/fifo
.gdb を使用してプロセスにアタッチします:gdb -p PID
次に標準入力を閉じます:call close (0)
;もう一度開く:call open ("/tmp/fifo", 0600)
最後に、(gdb がハングする可能性があるため、別の端末から) 書き込みます:
echo blah > /tmp/fifo
元の端末にアクセスできなくなったら...
reptyr
https://serverfault.com/a/284795/187998 を参照してください
そこからの引用:
まさにそれを行う reptyr を見てください。 github ページにすべての情報があります。<ブロック引用>
reptyr - プログラムを「re-ptying」するためのツール
reptyr は、既存の実行中のプログラムを新しい端末に接続するためのユーティリティです。 ssh 経由で実行中のプロセスを開始しましたが、終了する必要があり、中断したくありませんか?画面を起動し、usereptyr を取得してから、ssh セッションを終了してホームに向かいます。
使用法
Reptyr PID
"reptyr PID" は、ID PID を持つプロセスを取得し、現在の端末に接続します。
アタッチ後、プロセスは ^C と ^Z を含む新しいターミナルから入力を受け取り、新しいターミナルに出力を書き込みます。シェルにパッチを当てずに妥当な方法で修正することは不可能です。)
できないと確信しています。
ps x
で確認 .プロセスに ?
がある場合 tty の制御として 、これ以上入力を送信できません。
9942 ? S 0:00 tail -F /var/log/messages
9947 pts/1 S 0:00 tail -F /var/log/messages
この例では、入力を 9947
に送信できます。 echo "test" > /dev/pts/1
のようなことをする .もう一方のプロセス (9942
) に到達できません。
次回は、この状況を回避するために screen または tmux を使用できます。