2009-12-10 48 views

回答

0

signal(3)手冊頁上我的Mac OS X盒說

No Name   Default Action  Description 
... 
6  SIGABRT  create core image abort program (formerly SIGIOT) 

這表明,我認爲默認是不放鬆......

1

不,只有異常觸發堆棧展開。信號是POSIX的一部分,它是一個C API,所以它不會「意識到」C++設施,例如異常。

4

號:

$ cat test.cc 
#include <iostream> 
#include <sys/types.h> 
#include <signal.h> 

class Test { 
public: 
    ~Test() { std::cout << "~Test called" << std::endl; } 
}; 

int main(int argc, char *argv[]) 
{ 
    Test t = Test(); 
    if (argc > 1) { 
     kill(0, SIGABRT); 
    } 
    return 0; 
} 
$ g++ test.cc 
$ ./a.out 
~Test called 
$ ./a.out 1 
Aborted 
0

信號SIGABRT用於製造運行的應用程序一段時間的核心文件。我們有時候會使用這個信號來調試應用程序。而據我所知,析構函數不被這個信號調用。