2

私はこのCコードに出くわしました。freopen を使用して、バイナリ モードで stdin を再度開きます。

if (!isatty(STDIN_FILENO))
    freopen(NULL, "rb", stdin);

isattyテストがどこから来たのかわかりません。ターミナルを再度開いても意味がないということですか?

isatty テストを省略して、

freopen(NULL, "rb", stdin);
4

1 に答える 1

0

isatty()関数はPOSIX標準です。

バイナリモードで(シェル入力リダイレクトを介して)読み取られているファイルを確実に処理したい場合は、これを行うのが理にかなっていると思います。

于 2013-01-28T14:57:15.810 に答える