tôi phát hiện ra vấn đề tiếp theo trong mã đơn giản này:OCaml: ngoại lệ bất ngờ với Unix.getlogin khi stdin chuyển hướng
let() =
print_endline "Hello";
print_endline (Unix.getlogin())
Chạy trong trường hợp bình thường, với ./a.out
cho:
Hello
ricardo
Nhưng chạy như ./a.out </dev/null
khiến Unix.getlogin không thành công:
Hello
Fatal error: exception Unix.Unix_error(20, "getlogin", "")
Bất kỳ id nào ea tại sao điều này xảy ra?
Tôi vừa thử trên hệ thống của mình: Mac OS X 10.6.8/OCaml 3.12.0 và tôi không thấy sự cố. Đầu ra là như nhau trong cả hai trường hợp. Hệ thống của bạn là gì? –
Linux, tôi đã đọc một lần nữa người đàn ông 3 getlogin và tôi thấy "lỗi" trong glibc về chuyển hướng các stdin: -/ – Ricardo
Có, bkconrad đóng đinh nó! –