followup
This commit is contained in:
parent
3dda21d292
commit
24f7d0af3d
1 changed files with 27 additions and 0 deletions
|
@ -0,0 +1,27 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 4"""
|
||||||
|
date="2020-11-18T15:57:10Z"
|
||||||
|
content="""
|
||||||
|
hWaitForInput does not seem to behave as documented. It does not time out,
|
||||||
|
so blocks forever in this situation. This is with a 0 timeout and with
|
||||||
|
larger timeouts. Unsure why, it looked like it should work. Looking at the
|
||||||
|
ghc bug tracker, it seems to have some open bugs.
|
||||||
|
([[!commit 9af0000e0ff28c8eaae0ee1ce6838063d0a5ebef]] has my bench test
|
||||||
|
demonstrating this problem.)
|
||||||
|
|
||||||
|
hGetLineUntilExitOrEOF could still be implemented, but rather than using
|
||||||
|
hGetLine, it would need to use hGetBufNonBlocking to do one byte at a time
|
||||||
|
reads, with a small sleep when there is nothing to read,
|
||||||
|
until it gets an empty read at a point after the process has exited.
|
||||||
|
|
||||||
|
I can't see a way to implement it without the sleep, and that is
|
||||||
|
problimatic, too long sleep will slow down reading, and too short a sleep
|
||||||
|
will waste cpu. It might be possible to use hGetBufSome and cancel it
|
||||||
|
once the process exits, and only then switch to hGetBufNonBlocking to
|
||||||
|
read the rest of the buffer. But it's not clear what would happen hGetBufSome
|
||||||
|
got as far as reading from the handle, but didn't quite manage to finish
|
||||||
|
before being timed out. Seems likely any data it did read would then be lost.
|
||||||
|
|
||||||
|
Think I'll have to abandon the hGetLineUntilExitOrEOF idea.
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue