I found out the next issue in this simple code:
let () =
print_endline "Hello";
print_endline (Unix.getlogin ())
Running in the normal case, with `./a.out' gives:
Hello
ricardo
But running like `./a.out </dev/null' makes Unix.getlogin fail:
Hello
Fatal error: exception Unix.Unix_error(20, "getlogin", "")
A simple strace reveals the problem:
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=509, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7fb125554000
read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 509
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7fb125554000, 4096) = 0
-> ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS,
0x7fff12682c98) = -1 ENOTTY (Inappropriate ioctl for device)
write(2, "Fatal error: exception Unix.Unix"..., 59) = 59
exit_group(2) = ?
Any idea how to fix this?
Best regards
--
Ricardo (http://r.untroubled.be/)
--
You received this message because you are subscribed to the Google Groups
"ocaml-developer" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/ocaml-developer?hl=en
For other OCaml forums, see http://caml.inria.fr/resources/forums.en.html