悪意のある好奇心で、それぞれbashシェルを実行する2つの端末を開きました。最初の項目には、次のように入力します。
$ echo $$
11458
第二に:
$ echo -n "echo this command" >> /proc/11458/fd/0
その後、そのテキストは文字通りecho this command
最初の端末のプロンプトにパイプされます。ただし、最初の端末に入力すると、テキストはコマンドとして実行されず、新しいプロンプトのみが表示されます。
2回目の試みでは、最初の端末で次のコマンドを実行しました。
$ read line;echo $line
読み取りが入力を待っている間に、/proc/11458/fd/0
2番目の端末にいくつかのテキストを再表示します。テキストは最初の端末に表示されますが、<enter>
最初の端末を押すと終了read
し、echo $line
入力内容を読み取れなかったというメッセージが表示されます。
だから私はまだ害を及ぼす方法を見つけることができませんでした。私ができることは、2番目の端末で最初の端末のテキストを変更することだけです。もちろん、最初の端末のスクリーンリーダーはこれを認識します。スクリーンリーダーを使ってマウスの選択や端末機能について考えています。たとえば、Save Contents ...
両方を試してみました。
しかし、ファイルの終わりやその他の制御文字を最初の端末にエコーする方法を知っている場合は、最初のstdin
端末でプロセスを混乱させませんか?
ベストアンサー1
パート1 - あなたの質問に対する答えになりましたか?プロセスの標準入力に書き込む
パート2 - 自分が所有するすべてのプロセスに属する端末に書き込んで読むことができます。ただし、標準のUNIX権限を使用すると、他のユーザーログインに関連するデバイスに書き込んだり読み取ったりすることはできません。
ls -l /proc/$$/fd/0
lrwx------ 1 roaima roaima 64 Nov 27 13:19 /proc/7859/fd/0 -> /dev/pts/0
ls -lL /proc/$$/fd/0
crw--w---- 1 roaima tty 136, 0 Nov 27 13:24 /proc/7859/fd/0
デバイスに書き込むことができます:
( tput smso; echo 'surprise!' ) >/dev/pts/0