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

Reply via email to