あるプログラムの出力を別のプログラムの標準入力にパイプする方法は?

あるプログラムの出力を別のプログラムの標準入力にパイプする方法は?

入力を取得するためにscanf()を使用する小さなCプログラムがあります。

int main(){
    char* buf[10];
    scanf("%s", buf);
    return 0;
}

echo aaa他のプログラムの出力(一部のPythonによって生成された文字列または元の文字列)をscanfに渡したいと思います。

私は次のように、出力を別の端末からstdinに直接パイプすることを検討しました。

pidof a.out xxx echo aaa > /proc/xxx/fd/0

しかし、aaa私のCプログラムの端末にのみ印刷され、まだ入力を待っています。

事前にありがとう

答え1

できなければならない

echo 'string' | ./a.out

シェルはパイプが正しく完了していることを確認し、プログラムは標準入力から簡単に読み込みます。


あなたが試しているのは、移植性が非常に低いです。リダイレクト、パイプではありません。

また、戻りコードを確認しscanf()、入力バッファーが入力を受け入れるのに十分な大きさであることを確認してください。理想的には、%9s例のように読み取る文字数を制限するフォーマット文字列を使用してください。

関連情報