Portability | portable |
---|---|
Stability | experimental |
Maintainer | Matti Niemenmaa <matti.niemenmaa+web@iki.fi> |
Operations for piping data through multiple processes.
pipe
is the most general function, with 'pipe\'' and pipeString
provided
for convenience purposes.
handlePipe
, filePipe
, and 'filePipe\'' are for the common file-to-file
case and behave somewhat differently.
Whenever specifying a path to a process, explicitly specifying the current directory is recommended for portability. That is: use "./foo" instead of "foo", for instance.
On Windows, appending ".exe" to process paths is attempted if the invocation fails.
- pipe :: (Handle -> a -> IO ()) -> (Handle -> IO b) -> FilePath -> [(FilePath, [String])] -> a -> IO b
- pipe' :: (Handle -> a -> IO ()) -> (Handle -> IO b) -> [(FilePath, [String])] -> a -> IO b
- pipeString :: [(FilePath, [String])] -> String -> IO String
- handlePipe :: FilePath -> [(FilePath, [String])] -> Handle -> Handle -> IO ()
- filePipe :: FilePath -> [(FilePath, [String])] -> FilePath -> FilePath -> IO ()
- filePipe' :: [(FilePath, [String])] -> FilePath -> FilePath -> IO ()
Documentation
pipe :: (Handle -> a -> IO ()) -> (Handle -> IO b) -> FilePath -> [(FilePath, [String])] -> a -> IO bSource
Pipes the input, using the given writer and reader functions, through all the commands named, in the given working directory. Returns the result.
An exception is thrown if the list of programs is empty.
The writer function is called in a 'forkIO'\'d thread, allowing this to be lazy.
pipe' :: (Handle -> a -> IO ()) -> (Handle -> IO b) -> [(FilePath, [String])] -> a -> IO bSource
A convenience function for when you don't care about the working directory, 'pipe\'' uses ..
handlePipe :: FilePath -> [(FilePath, [String])] -> Handle -> Handle -> IO ()Source
A function for the common case of piping from a Handle
to a Handle
.
Note that this is not a convenient frontend for pipe
and is fundamentally
different in the following ways:
- A null list of programs is allowed, in which case the contents of the input Handle are simply written to the output Handle.
- This function is not lazy and returns only when the writing has been completed.