Ciao, I see that: if an output port is not GC'ed before the termination of the Guile process, its flush function is invoked ('libguile/init.c', 'really_cleanup_for_exit()'; 'cleanup_for_exit()' registered as 'atexit()' handler).
This is causing me troubles because I have an output port whose flush function: * has to raise an error if the "underlying device" cannot be accessed; but, * it must not raise an error if this happens upon termination of Guile, because at this time it is normal for the device not to be there anymore. My "underlying device" is another C object. I see that in version 1.6.7 of Guile there is a global variable called 'scm_i_terminating' that is set to 1 before the invocation of 'scm_flush_all_ports()'; so flush functions (example: 'fport_flush()', 'libguile/fports.c') can test it and choose what to do in case of error. I'm using Guile version 1.8.0: here 'scm_i_terminating' is not set to 1 before invoking 'scm_flush_all_ports()', but 'fport_flush()' still tests it. In both versions I do not see where 'scm_i_terminating' is initialised to zero, but when it comes to my functions it is set to zero (my ignorance on C?), even when the process is terminating. Conclusion: how can I test, in my flush function, if the process is exiting? Thank you for your time. -- Marco Maggi "They say jump!, you say how high?" Rage Against the Machine - "Bullet in the Head" _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user