process-streaming ================= A library for interacting with system processes in a streaming fashion. The basic goals: - Concurrent, streaming access to stdin, stdout and stderr... - ...all the while preventing deadlocks caused by mishandling of the streams. - Easy integration with consumers from [pipes](http://hackage.haskell.org/package/pipes), parsers from [pipes-parse](http://hackage.haskell.org/package/pipes-parse) and folds from [foldl](http://hackage.haskell.org/package/foldl). - Facilitate the use of sum types to signal failures, when desired. - No fussing around with process handles: wait for the process by waiting for the IO action, terminate the process by killing the thread executing the IO action. A [relevant thread](https://groups.google.com/forum/#!searchin/haskell-pipes/pipes$20process/haskell-pipes/JFfyquj5HAg/Lxz7p50JOh4J) in the Haskell Pipes Google Group. ## Possible alternatives in Hackage * turtle (pipes-based, shell programming) http://hackage.haskell.org/package/turtle * pipes-cliff (pipes-based) http://hackage.haskell.org/package/pipes-cliff * pipes-shell (pipes-based) http://hackage.haskell.org/package/pipes-shell * shelly (shell programming) http://hackage.haskell.org/package/shelly * shell-conduit (coundit-based, shell programming) http://hackage.haskell.org/package/shell-conduit * Data.Conduit.Process from conduit-extra (conduit-based) http://hackage.haskell.org/package/conduit-extra * System.IO.Streams.Process from io-streams (iostreams-based) http://hackage.haskell.org/package/io-streams * process-extras http://hackage.haskell.org/package/process-extras