Hi,
mal folgendes
Dieses Programm macht, was ich will, wenn ich eine Taste drücke, d.h. atexit und der Destruktor werden aufgerufen, wenn ich jedoch ein KILL signal schicke, wird nur atexit aufgerufen und nicht mehr der destruktor, den ich aber brauche zum "sauber machen".
Wie kann ich mit atexit ( oder irgendwie anders ) es so hinbekommen, dass für die Klasse T eine Funktion 100% aufgerufen wird, egal ob ich ein Signal schicke oder es requlär zu Ende geht.
Ich kann leider keine statische Methode für die Klasse T machen
?(
mal folgendes
Code:
void func(void){
std::cout<<"at exit\n";
}
static void sig_hdl(int signr){
std::cout<<"signal "<<signr<<std::endl;
exit(EXIT_FAILURE);
}
class T{
public:
T(){
atexit(func);
}
~T(){
std::cout<<"dtor()\n";
}
protected:
void t_func(void){
std::cout<<"at exit\n";
}
};
int main(void){
T t;
signal(SIGTERM,sig_hdl);
signal(SIGKILL,sig_hdl);
signal(SIGINT,sig_hdl);
char c = getchar();
return 0;
}
Dieses Programm macht, was ich will, wenn ich eine Taste drücke, d.h. atexit und der Destruktor werden aufgerufen, wenn ich jedoch ein KILL signal schicke, wird nur atexit aufgerufen und nicht mehr der destruktor, den ich aber brauche zum "sauber machen".
Wie kann ich mit atexit ( oder irgendwie anders ) es so hinbekommen, dass für die Klasse T eine Funktion 100% aufgerufen wird, egal ob ich ein Signal schicke oder es requlär zu Ende geht.
Ich kann leider keine statische Methode für die Klasse T machen
?(