3

私の包括的なプログラムはシェルスクリプトです。このシェル スクリプトは、入力をパイプする必要がある C プログラムを呼び出し、最終的に C プログラムはシェルを作成します。

ただし、シェルスクリプト内で入力をCプログラムにパイプすると

Do_Other_Stuff
./my_prog < file1

殻を生かすことができません。ただ走って、

Do_Other_Stuff
./my_prog

stdin を自分で入力する必要があり、my_prog が終了するとシェルが正しく生成されるため、機能します。./my_prog 呼び出しを C プログラムでラップし、コンパイルして実行するとうまくいくと確信していますが、シェルを使用したよりクリーンな方法があるかどうかについては興味があります。

cat file1 | ./my_progさまざまな状況で使用と使用の組み合わせをいくつか試しまし&たが、成功しませんでした。

ありがとう!

4

2 に答える 2

5

試す:

cat file1 - | ./myprog

多くのプログラムは、「ファイル名」-を stdin を意味するものとして認識します。

于 2012-09-18T02:44:37.447 に答える
1

C プログラムのソース コードにアクセスできますか? 私の推測では、C プログラムはistty(0)stdin が端末から来ているかどうかを判断するために使用していると思います。その場合は、おそらく対話型シェルのみを作成します。ファイルまたはパイプのどちらからでも stdin リダイレクトを使用すると、istty(0)false が返されます。

于 2012-09-18T07:00:40.627 に答える