2番目のシェルで実行されているプロセスの "stdin"にコマンドを提供するにはどうすればよいですか?

2番目のシェルで実行されているプロセスの

スコープでユーザー入力を待つプロセスがある場合は、2stdin番目の端末でそのユーザー入力をどのように提供しますか?

特にcプログラムを実行すると

while(1){
    fgets(string, len, stdin);
    string[strlen(string)-1] = 0;
    if(strcmp("Stop", string) == 0){
        printf("Gotcha");
        return 1;
    }
}

それでは、このプロセスに別のプロセスの「Stop」文字列を供給して、stdin最初のプロセスが停止して「Gotcha」が印刷されるようにするにはどうすればよいですか?

端末 "pts/0" で c プログラムを実行し、次のコマンドを使用して新しい端末 ("pts/1") を開きました。

$ echo "Stop" > /proc/<pid>/fd/0
$ echo "Stop" > /dev/pts/0

ここで、pidはプロセスIDです。 "stop"コマンドは最初のシェルで "繰り返し"されますが、プロセスはそれを受け取りません。

ベストアンサー1

名前付きパイプを作成し、Cプログラムからそれを読み取るようにします。

$ mkfifo input
$ ./prog <input

他のシェルセッションでは:

$ echo Stop >/path/to/input

おすすめ記事