スコープでユーザー入力を待つプロセスがある場合は、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