Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sched.h>
- #include <signal.h>
- #include <stdio.h>
- #include <unistd.h>
- sig_atomic_t value = 0;
- sig_atomic_t flag = 0;
- void sigterm_handler(int sig)
- {
- flag = 1;
- }
- void sigusr1_handler(int sig)
- {
- value++;
- }
- void sigusr2_handler(int sig)
- {
- value *= -1;
- }
- int main()
- {
- struct sigaction sigusr1_act = {
- .sa_handler = sigusr1_handler,
- .sa_flags = SA_RESTART,
- .sa_mask = 0,
- };
- struct sigaction sigusr2_act = {
- .sa_handler = sigusr2_handler,
- .sa_flags = SA_RESTART,
- .sa_mask = 0,
- };
- struct sigaction sigterm_act = {
- .sa_handler = sigterm_handler,
- .sa_flags = SA_RESTART,
- };
- sigaction(SIGUSR1, &sigusr1_act, NULL);
- sigaction(SIGUSR2, &sigusr2_act, NULL);
- sigaction(SIGTERM, &sigterm_act, NULL);
- printf("%d\n", getpid());
- fflush(stdout);
- scanf("%d", &value);
- for (;;) {
- pause();
- if (flag == 1) {
- break;
- }
- printf("%d\n", value);
- fflush(stdout);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement