0a558de76c
The sigaction handler called map on an option, creating a pointer to a move value. This in turned caused UB for signal handlers. Avoid using pointers directly, and instead prefer references.
26 lines
538 B
C
26 lines
538 B
C
#include <signal.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
|
|
#include "test_helpers.h"
|
|
|
|
void handler(int sig) {
|
|
puts("Signal handler called!");
|
|
}
|
|
|
|
int main(void) {
|
|
void (*signal_status)(int) = signal(SIGUSR1, handler);
|
|
ERROR_IF(signal, signal_status, == SIG_ERR);
|
|
signal_status = signal(SIGUSR1, handler);
|
|
ERROR_IF(signal, signal_status, != handler);
|
|
|
|
puts("Raising...");
|
|
|
|
int raise_status = raise(SIGUSR1);
|
|
ERROR_IF(raise, raise_status, < 0);
|
|
|
|
puts("Raised.");
|
|
}
|