1

IO をリダイレクトする C プログラムを作成しようとしています。出力は簡単にできましたが、入力は難しいようです。たぶん私はそれをすべてよく理解していませんが、私は次のようなことをしています:

  int redFile;

  fflush(stdin);

  myio = dup(0);

  redFile = open(rhs, O_WRONLY, 0644); 

  dup2(redFile, 0);
  close(redFile);

  // Any scanf("%s", &buf) here should read from my redFile (correct?) into some buffer, buf[64] or something

   fflush(stdin);
   dup2(myio, 0);
   close(myio);

これで、ファイル redFile からの文字列を含む buf[64] がいくつかありますが、これを char * lhs (プログラムで以前に設定) で指定されたコマンドへの入力にするにはどうすればよいですか。私のプログラム全体は、基本的に仮想シェルを作成するために execve() を使用しています。

次のようなものを処理できる必要があります。

入力.txt:

test1
test2
test3

tac < input.txt > output.txt

output.txt

test3
test2
test1
4

1 に答える 1

1

バッファの内容をプロセスへの入力にしたい場合は、そのデータをパイプに書き込む必要があります。基本的に、パイプを作成してからフォークする必要があります。子はパイプから読み取られるように入力を複製しdup2( pfd[ 0 ], STDIN_FILENO )、次に実行しますが、親はデータをパイプの反対側に書き込みます。

于 2013-02-13T18:21:16.987 に答える