[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Flushing all Buffers Before Exiting



David Wright <deblis@lionunicorn.co.uk> writes:
> An efficient way of doing this is to trap a signal, like USR1,
> in your program, and react by either your close/open-append or
> just flushing the buffers. That way, the program will run
> normally most of the time, without wasting all that time
> opening/closing files.
> 
> If there's not too much output compared with the computation necessary
> to generate it, just setting line-buffering on the output stream
> can be sufficient.
> 
> I've read that when the program is already running, some languages
> (like Python, so probably Perl too) offer a debugger that can
> allow you to flush the buffers from "within", but I've not tried
> it.
> 
> Cheers,
> David.

	Before reading this posting, I added code in my perl
script to open, append and close the file but the suggestion to
add a signal handler is a much better idea so thanks for the
suggestion.

	Opening, appending and closing for each new line of
output made me a bit squeamish.  The program is monitoring a
stream of data from a radio scanner.  The data spew in at about
20 or 30 lines per second.  When nothing is happening, there are
3 possible strings that indicate nothing is happening right now.
When something changes, the strings stop matching 3 comparison
strings i put in which match each of the 3 "nothing is happening
right now" strings and the different strings get printed to the
screen and to the disk.  In reality, these strings don't exactly
mean that nothing is happening but that the same non events are
happening.

	When things change and there is output of interest, that
output also spews in at 20 or 30 lines per second so I need to do
as little as possible to handle that so the system doesn't get
swamped.  The signal handler is most likely far more efficient a
method to capture the data of interest as it will essentially not
have to make any decisions until time to shut down the program
and look at the data.

	Even with the open, append and close routine, the strings
it is capturing appear to be good but it could be capturing for
minutes on end at times and it needs to just be able to run like
the wind and store lines as quickly as it can.

	Thank you.

Martin McCormick 
amateur radio WB5AGZ


Reply to: