ho scoperto il prossimo numero in questo semplice codice:OCaml: un'eccezione imprevista con Unix.getlogin quando stdin rediretto
let() =
print_endline "Hello";
print_endline (Unix.getlogin())
esecuzione nel caso normale, con ./a.out
dà:
Hello
ricardo
Ma correndo come ./a.out </dev/null
rende Unix.getlogin venga meno
Hello
Fatal error: exception Unix.Unix_error(20, "getlogin", "")
Qualsiasi id E perché questo succede?
Ho appena provato questo sul mio sistema: Mac OS X 10.6.8/OCaml 3.12.0 e non vedo il problema. L'output è lo stesso in entrambi i casi. Qual è il tuo sistema? –
Linux, ho letto di nuovo man 3 getlogin e ho visto il "bug" in glibc sul reindirizzamento dello stdin: -/ – Ricardo
Sì, bkconrad lo ha inchiodato! –