import Control.Concurrent
import qualified Data.Text as T
import GHC.IO.Handle
import System.Process
getFileContent :: IO T.Text
getFileContent = withCreateProcess (proc "cat" ["very-big-file.txt"]){ std_out = CreatePipe }
\_mStdin mStdout _mStderr phandler ->
case mStdout of
Nothing -> error "No handler"
Just stdout -> do
putStrLn "Connected, getting"
!output <- T.pack <$> hGetContents stdout
res <- waitForProcess phandler
putStrLn $ "Awaited: " <> show res
putStrLn $ "Result: " <> show (T.length output)
threadDelay 100000
putStrLn "Waiting"
return output
main :: IO ()
main = do
_ <- getFileContent
return ()