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

Reply via email to