As usual, You specify import only this function.
Takes an IO as action to run, and a String as given stdin, then returns whole stdout and stderr as String of tuple.
import System.IO.Capture (capture) main = print =<< capture (getLine >>= putStr) "foobar" -- prints ("foobar","")
WARNING: If Lazy Reading such as
getContents was contained in the
action, its behavior is very strange. For detail, see