blob: e135739ce47b206100b33294432d153f6c0a09c1 (
plain) (
tree)
|
|
#include "signal_handler.h"
#include <wait.h>
#include <stdio.h>
#include <unistd.h>
void signal_handler(int signal) {
if (signal == SIGINT) {
interrupt_issued = 1;
} else if (signal == SIGTSTP) {
stop_issued = 1;
kill(getpid(), SIGINT);
}
}
void handle_interrupt(pid_t pid) {
int status;
if (stop_issued) {
stop_issued = 0;
interrupt_issued = 0;
} else if (interrupt_issued) {
interrupt_issued = 0;
kill(pid, SIGKILL);
waitpid(pid, &status, 0);
printf("Killed [%ld]\n", (long)pid);
return;
}
kill(pid, SIGCONT);
printf("[%ld]\n", (long)pid);
}
|