Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
toplevel "I/O error: Bad file descriptor" loop
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2006-03-17 (19:30)
From: Christophe TROESTLER <debian00@t...>
Subject: toplevel "I/O error: Bad file descriptor" loop

I have put together the following simple binding to libmagic: Everything works fine
with bytecode and native code compiled programs but, when I try it in
the toplevel to query a non existing file or a special device, I get a
looping "I/O error: Bad file descriptor" message.  Example:

  # let c = Magic.create [];;
  val c : Magic.t = <abstr>
  # let m1 = Magic.file c "";;
  val m1 : string =
    "ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped"

So far everything is fine.

  # let m3 = Magic.file c "/dev/null";;
  val m3 : string = "character special (1/3)"
  # I/O error: Bad file descriptor

The last message is returned in a loop by the system.

  # let m4 = Magic.file c "xxx";;

The same thing happens if "xxx" does not exists.

Has anybody an idea where to look for the cause of this problem?  I
looked into libmagic code but the one dealing with file system magic
(fsmagic.c) seems to only perform an unharmful stat/lstat and not
touch stdout.

Best regards,