PseudoTerminals and Handles (again)

Hi All, A few days ago, I got started with the code found on this blogpost: http://www.serpentine.com/blog/2008/09/30/unix-hacking-in-haskell-better-pse... On my system, I found that using pseudoterminals as handles did not work. Reading output and writing input works fine, it's just that finding "the end of the stream" seems to break. This means that I can read all output up to the last character outputted by the other process, but the string doesn't end there. Instead it's throwing: fdReadBuf: hardware fault (Input/output error) Using normal pipes (no pty), this does work as expected. My guess is that I should somehow setup the fd or the pty a little more before starting the child process. Set them to nonblock/block, read/write mode, setTerminalAttribute, stuff like that. And maybe it matters when to change settings (before forking / after forking / in the child), or to change the master or the child... I don't know very much about this stuff but since the rest seems to work fine it just seems to be a problem with how the child announces it's finished writing to the fd. Is there anyone who got this to work somehow? Or is there a way to somehow trick hGetContents and friends to just treat the "hardware fault" as EOF? Thanks Mathijs PS: I'm using ghc 6.12.1 on x86_64 (ubuntu) by the way
participants (1)
-
Mathijs Kwik