私はCで独自のシェルを作成しており、EOFを検出する必要があります(実行時の場合./myshell < commands.txt
)
コマンド.txtに含まれるもの:
ls
pwd
これらは両方とも、プログラム内から個別に正常に実行されます。しかし、テキストファイルで実行すると、無限ループが発生します。
while(1)
シェルのループで、最初に行うことは次のとおりです。
if (feof(stdin)) { my_exit(); }
my_exit
単純です:
void my_exit() {
printf("End of file! Bye\n");
exit(0);
}
exit(0)
プログラム(およびループ)を終了しませんか?なぜ私は
ファイルの終わり!ファイルのさようなら!ファイルのさようなら!ファイルのさようなら!ファイルのさようなら!ファイルのさようなら!さようなら....など
私もそのfgets == NULL
方法を試してみました。同じループ