ghc's hPutBuf doesn't obey the buffering mode
Ian Lynagh
igloo at earth.li
Thu Apr 14 21:38:38 EDT 2005
If I run this program:
--------------------------------------------------
import System.Cmd (system)
import Foreign.C.String (castCharToCChar)
import Foreign.Marshal.Array (newArray)
import System.IO (hSetBinaryMode, hPutBuf, stdout, hSetBuffering,
BufferMode(..))
main = do hSetBinaryMode stdout True
hSetBuffering stdout LineBuffering
p <- newArray (map castCharToCChar "foo\n")
hPutBuf stdout p 4
system "sleep 5"
putStr "bar\n"
--------------------------------------------------
compiled by GHC then it waits 5 seconds and then prints foo and bar
together.
With hugs, foo is printed and then 5 seconds later bar is printed, as I
would expect.
Thanks
Ian
More information about the Glasgow-haskell-bugs
mailing list