Hi Jens, GHC folk, I recently ran into a problem with POpen. I'm using it lots (on the order of tens of thousands) of times to run a very fast program on small amounts of data and after a little while, it dies, saying:
Fail: system error Action: createPipe this can be reproduced in this program: import POpen main = mapM_ (\x -> popenEnvDir "ls" [(x:"*")] Nothing Nothing Nothing) (['a'..'z'] ++ ['A'..'Z']) i ran in to a similar problem with reading files wherein i was opening (and not closing) too many files using readFile and my solution was to write a function: readFileCloseBy :: DeeqSeq a => (String -> a) -> FilePath -> IO a readFileCloseBy f fp = do h <- openFile fp ReadMode d <- hGetContents h let res = f d res `deepSeq` hClose h res `deepSeq` (return res) this function opens and reads a file, parses it using the function provided, deepSeqs the result and closes the file. could a similar thing be done with popen? - Hal -- Hal Daume III "Computer science is no more about computers | [EMAIL PROTECTED] than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users