[Haskell-cafe] haskell and releasing resources

Fawzi Mohamed fmohamed at mac.com
Tue Feb 6 09:12:59 EST 2007


> [...]
> Wait for the process to terminate, using
>
>     waitForProcess pid

Thanks fro the prompt response Don, I should have said it, but I knew  
about waitForProcess pid but I did not want to use it.
The reason is the following, if I do

getTextOfPdf pdfPath = do
     (inp,out,err,pid) <- runInteractiveCommand ("pdftotext -l 1 "+
+pdfPath++" -")
     waitForProcess pid
     return (hGetContents out)

it deadlocks, because I did not read out yet, and if the buffer is  
full then the process sleeps waiting for me to read.
So I can forkIO the wait, but then the question is do I have to wait  
for the thread?
Giving back the pid along with out is a solution, but I did not want  
to caller to know about the detail that I am using an external  
process to get the data.
Also I did not want to read everything in memory, as I think you do  
in your example, ok I could, but why should I, we are lazy right?...

Fawzi



More information about the Haskell-Cafe mailing list