シンプルなシェルプログラムを作成しようとしていますが、組み込み以外のコマンドのファイルリダイレクトに問題があります。たとえば./a.out < infile> outfileの場合、ユーザがプログラムa.outをinfileから受け取って、通常は使用するストリームではなく出力をoutfileに出力します。ビルトインでないコマンドが出たとき、私は新しいプロセスをフォークし、指定された引数で新しいイメージをオーバーレイします。一般的な形式は、コマンドarg1 arg2 ... argn < infile> outfileです。 args(arg1〜argn)は新しいイメージに渡され、入力と出力はinfileとoutfileに変更されます。次に、私のフォークプロセスがどのように見えるかのスニペットを示します。シンプルシェルプログラムunix組み込みコマンド以外のファイルリダイレクト
pid = fork();
if (pid < 0) {
fprintf(stderr, "*** fork error ***\n");
} else if (pid == 0) {
execvp(command, args);
}
waitpid(pid, &status, 0);
私はこれを行うことを可能にするUNIXコマンドはありますか?私はまた、新しいイメージの標準と標準出力を変更する方法があるかもしれないと考えていましたか?すべてのリンクや情報をいただければ幸いです。
「フォークエラー」は有用なメッセージではありません。 perror()を使用してください。 –