jackin@vehka.uta.fi (Markku M{enp{{) (07/30/90)
My program uses temporary files all the time. To allow clean exit after CTRL+C, I put all names of the opened temporary files in a static table. When my signal handler detects a CTRL+C, it reads the table and removes all the files from the table and deletes them from the disk. My problem occures when I call an another program from my program. I first redirect the stdout to a file and then call the program, whose output goes into the file. If CTRL+C is pressed during the called program it exits cleanly (this leaves no files). Now the parent programs' signal handler also receives CTRL+C and goes to do what it was designed to do, but the redirection is still in effect and the associated stream is still open. So it can not be deleted. So there is one file I have to get rid of. How can this be taken care of ? Note that I can't pass any parameters to my signal handler, all is done via static variables. I use fclosall() which doesn't close stdout or stderr. I thank you for your help, Markku (jackin@vehka.uta.fi)