1

C でシェルを実装しています。リダイレクト操作を実装すると、出力リダイレクトは正常に機能しますが、入力リダイレクト操作は何もしません。(標準出力には何も表示されません)

COMMAND-> wc < out.txt
Child 12878 died 0x008B

COMMAND->

[ここで、COMMAND-> は私のプロンプトです]

子が死亡したときに子のステータスを出力すると、0x8B の値が取得されます。これは何か意味がありますか?

この投稿をフォローしましたが、リダイレクトの実装のコア部分は、ここで提案されているものと似ています。 C でシェルを実装しており、入力/出力リダイレクトの処理に助けが必要

これは、入力リダイレクトで何が起こっているかの要点です:

in = open(file_name, O_RDONLY);
dup2(in,0);
close(in);
execvp("wc",args);

(これはライブの宿題であり、MOSS に巻き込まれる可能性があるため、コード全体を投稿することはできません)

4

1 に答える 1

0

に渡されたポインタは であったexecvpためNULL、 を取得しSIGSEGVました。

入力されたコマンドをパイプとリダイレクトに基づいて分離するためのバックエンド処理でエラーが発生しました。

于 2012-11-27T01:36:52.660 に答える