Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <memory.h>
- #include <signal.h>
- #include <zconf.h>
- volatile int flag = 0;
- void action(int sig) {
- static int val = 0;
- flag = 1;
- if (sig == SIGUSR1) {
- val += 5;
- } else if (sig == SIGUSR2) {
- val -= 4;
- }
- printf("%d %d\n", sig, val);
- fflush(stdout);
- if (val < 0) {
- exit(0);
- }
- }
- int main(int argc, char *argv[]) {
- printf("%d\n", getpid());
- fflush(stdout);
- struct sigaction act = {};
- act.sa_handler = action;
- sigset_t set, oldset;
- sigemptyset(&set);
- sigaddset(&set, SIGUSR1);
- sigaddset(&set, SIGUSR2);
- act.sa_mask = set;
- sigaction(SIGUSR1, &act, 0);
- sigaction(SIGUSR2, &act, 0);
- while (1) {
- while (!flag) {
- sigsuspend(&oldset);
- }
- flag = 0;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement