リダイレクトSTDIN Unix.getloginと予期しない例外:OCamlは:私はこの単純なコードで次の問題を発見し
let() =
print_endline "Hello";
print_endline (Unix.getlogin())
通常の場合には実行./a.out
では、与えられる:
Hello
ricardo
しかし、 ./a.out </dev/null
のように実行すると、Unix.getloginが失敗します。
Hello
Fatal error: exception Unix.Unix_error(20, "getlogin", "")
すべてのIDなぜこのようなことが起こるのでしょうか?
私のシステムでこれを試しました:Mac OS X 10.6.8/OCaml 3.12.0と私は問題を見ることができません。どちらの場合も出力は同じです。あなたのシステムは何ですか? –
Linux、もう一度man 3 getloginを読んで、glibcでstdinのリダイレクトについて "バグ"を見ました: -/ – Ricardo
はい、bkconradはそれを釘付けにしました! –