El archivo de encabezado csignal declaró la función raise() para manejar una señal en particular. Signal aprende algún comportamiento inusual en un programa y llama al manejador de señales. Se implementa para verificar si se llamará al controlador predeterminado o si se ignorará.
Sintaxis:
int raise ( int signal_ )
Parámetro: la función acepta un solo parámetro sig que especifica la señal que se eleva artificialmente. Puede tomar cualquiera de las señales estándar de 6 C.
Tipos de señales definidos
- SEÑAL
- SEGUIR
- SIGSEGV
- SIGTERM
- SIGABRT
- SIGFPE
Valor devuelto: devuelve un valor distinto de cero sin error en la señal, de lo contrario, devuelve cero. La función devuelve diferentes elementos distintos de cero con diferentes señales definidas.
Los siguientes programas ilustran el método anterior:
Programa 1:
// C++ program to illustrate the // raise() function when SIGABRT is passed #include <csignal> #include <iostream> using namespace std; sig_atomic_t s_value = 0; void handle(int signal_) { s_value = signal_; } int main() { signal(SIGABRT, handle); cout << "Before called Signal = " << s_value << endl; raise(SIGABRT); cout << "After called Signal = " << s_value << endl; return 0; }
Before called Signal = 0 After called Signal = 6
Programa 2:
// C++ program to illustrate the // raise() function when SIGINT is passed #include <csignal> #include <iostream> using namespace std; sig_atomic_t s_value = 0; void handle(int signal_) { s_value = signal_; } int main() { signal(SIGINT, handle); cout << "Before called Signal = " << s_value << endl; raise(SIGINT); cout << "After called Signal = " << s_value << endl; return 0; }
Before called Signal = 0 After called Signal = 2
Programa 3:
// C++ program to illustrate the // raise() function when SIGTERM is passed #include <csignal> #include <iostream> using namespace std; sig_atomic_t s_value = 0; void handle(int signal_) { s_value = signal_; } int main() { signal(SIGTERM, handle); cout << "Before called Signal = " << s_value << endl; raise(SIGTERM); cout << "After called Signal = " << s_value << endl; return 0; }
Before called Signal = 0 After called Signal = 15
Programa 4:
// C++ program to illustrate the // raise() function when SIGSEGV is passed #include <csignal> #include <iostream> using namespace std; sig_atomic_t s_value = 0; void handle(int signal_) { s_value = signal_; } int main() { signal(SIGSEGV, handle); cout << "Before called Signal = " << s_value << endl; raise(SIGSEGV); cout << "After called Signal = " << s_value << endl; return 0; }
Before called Signal = 0 After called Signal = 11
Programa 5:
// C++ program to illustrate the // raise() function when SIGFPE is passed #include <csignal> #include <iostream> using namespace std; sig_atomic_t s_value = 0; void handle(int signal_) { s_value = signal_; } int main() { signal(SIGFPE, handle); cout << "Before called Signal = " << s_value << endl; raise(SIGFPE); cout << "After called Signal = " << s_value << endl; return 0; }
Before called Signal = 0 After called Signal = 8
Publicación traducida automáticamente
Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA