Đây là mã mà tôi đặt trình xử lý của mình cho tín hiệu SIGABRT
sau đó tôi gọi abort()
nhưng trình xử lý không được xử lý, thay vào đó chương trình bị hủy bỏ, tại sao?Làm thế nào để xử lý tín hiệu SIGABRT?
#include <iostream>
#include <csignal>
using namespace std;
void Triger(int x)
{
cout << "Function triger" << endl;
}
int main()
{
signal(SIGABRT, Triger);
abort();
cin.ignore();
return 0;
}
CHƯƠNG TRÌNH OUTPUT:
trình hoàn hảo ở đây, sau khi tôi bao gồm ''. Nền tảng nào? –
Windows 7 x64 với MSVC++ 2010 (không cần bao gồm cstdlib trong studio trực quan) – codekiddy
Vâng, chương trình sẽ bị hủy bỏ trừ khi trình xử lý tín hiệu thực hiện 'longjmp'. Nếu bạn muốn thông báo được in trước đó, bạn có thể muốn xóa 'std :: cout' (hoặc ghi vào' std :: cerr'). –