1

C言語でシェルを書いています。ユーザーはさまざまなコマンドを実行し、パイプ (|) を使用して 1 つのコマンドの入力を別のコマンドにリダイレクトできる必要があります。メイン シェル プロセスは親プロセスであり、コマンドごとに新しいプロセスをフォークし、子プロセスでは、コマンドは exec*() 関数によって呼び出されます。

しかし、ある子プロセスの標準入出力を別の子プロセスにリダイレクトする方法がわかりません。

4

1 に答える 1

1

これはあなたを助けることができるかもしれません....

int f=open(somefile, O_WRONLY | O_CREAT, S_IRWXU);
dup2(f,1);  //redirecting output to file
//execute your first command here using fork
close(f);
int f=open(somefile, O_RDONLY | O_CREAT, S_IRWXU);
dup2(f,0);    //this will give the ouput of the first command to stdout 
//i.e. the input is present for second one
//execute your second command here
close(f);
于 2012-11-03T06:31:18.883 に答える