[Haskell-cafe] Blocking IO & FIFOs
Jason Dusek
jason.dusek at gmail.com
Sat Oct 20 16:00:41 CEST 2012
2012/10/20 Asten, W.G.G. van (Wilfried, Student M-CSC)
<w.g.g.vanasten at student.utwente.nl>:
> Would you be happy with a solution like this:
>
> - First create two handles to two files in the tmp directory
> - Then use StdStream's UseHandle to redirect std_err and std_out
> (using CreatePipe for std_in) to these files
> - Then write your query to the Handle for std_in
> - waitForProcess
> - Collect std_out and std_err from the temporary files.
>
> If that is not satisfactory you may want to check out conduit-process
> (http://hackage.haskell.org/packages/archive/process-conduit/0.5.0.2/doc/html/src/Data-Conduit-Process.html#conduitProcess)
> that also does some interaction with a process and interleaves std_in
> and std_out. It should not be to hard to combine std_err into that
> concept. I also faced this same problem and in one case solved it by
> using a temporary file to hold my content which was also deleted
> afterwards (This immediately prevented the content building up in
> memory).
For my application, it's important to be able to run multiple
queries against the same Bash session. Waiting for Bash to shut
down is thus not a viable way to finalize the response.
Perhaps I can spawn two cats with their outputs connected to the
FIFOs and wait for them to terminate.
--
Jason Dusek
pgp // solidsnack // C1EBC57DC55144F35460C8DF1FD4C6C1FED18A2B
More information about the Haskell-Cafe
mailing list