I'm trying to do some cleanup (write open files) when Linux shuts down. I thought the right method would be to trap SIGTERM and do the necessary processing. Here's my sample code:

Code:
#include <stdio.h> // for File I/O
#include <signal.h> // for signals
#include <unistd.h> // for sleep()

void handler(int signal)
{
	FILE *out=fopen("test.txt","at");
	if (out)
	{
		fprintf(out,"got %d\n",signal);
		fclose(out);
	}
}

int main()
{
	signal(SIGTERM,handler);
	signal(SIGINT,handler);
	sleep(30);
}
When I run this, and press Ctrl-C, it writes "got 2" to test.txt. However, if I logout/reboot, nothing is written to the file.

Any help or ideas would be appreciated!

-Ron