Johannes Radinger wrote: > > Using an exit handler ensures that the temporary map gets removed > > regardless of how the script terminates (e.g. if it terminates due to > > an exception). > > Thank you for your nice examples how to do that with tmp files and the exit > handler. > > Just some questions: > > 1) is the PID also used on windows systems? so can it be integrated > in a script which also windows users want to use?
Yes. > Is it correct that the PID is the same value for running the whole > script one time? Yes. > 2) what exactly does the "global tmpmap"? First, it should have been "global tmp_map", not "global tmpmap". "global" declares a variable as global, so that any assignment to that variable within the function modifies the global variable rather than creating a local variable with that name. In order to assign a global variable from within a function, it must be explicitly declared "global". A "global" statement isn't required to read a global variable. In this case, tmp_map must be global so that the name generated within main() can be used from within cleanup(). > 3)I've got a lot of tmp-files which will be created during the > process, so is there and option to tell the g.remove that all maps > containing .tmp.%d' % os.getpid() in the end should be removed > instead of typing all the tmp map files into the list of g.remove. You could use g.mremove to remove multiple maps based upon a pattern, but I would recommend specifying all of the temporary maps explicitly. If an option for a GRASS command accepts multiple values (e.g. all of g.remove's options), you can pass a Python list via grass.run_command(), e.g.. grass.run_command('g.remove', rast = [tmp1, tmp2, tmp3]) > 4) so the whole thing works that in the end all the tmp maps are > deleted after the processing of the script and after an exception > etc. An exit handler registered using atexit.register() will be run when the script terminates, whether due to reaching the end of the script, calling sys.exit(), an uncaught exception, Ctrl-C/Ctrl-Z, etc. The only situation where it won't be run is if the Python interpreter crashes (or is terminated with SIGKILL on Unix, etc), which can't realistically be handled by any means. -- Glynn Clements <gl...@gclements.plus.com> _______________________________________________ grass-user mailing list grass-user@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-user