import Control.Exception import System.IO.Error import System.Process main :: IO () main = do res <- handle (return . Left . isDoesNotExistError) $ do (_, _, _, ph) <- createProcess (proc "definitelydoesnotexist" []) { close_fds = True } fmap Right $ waitForProcess ph case res of Left True -> return () _ -> error $ show res