Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ** EPITECH PROJECT, 2020
- ** navy
- ** File description:
- ** sigin
- */
- #include "../../include/navy.h"
- #include "../../include/util.h"
- int read_int(navy_t *navy)
- {
- int move;
- while (navy->sig[6] != '\0')
- usleep(100);
- move = bin_to_int(navy->sig);
- navy->sig[6] = '0';
- navy->sig[0] = '\0';
- return (move);
- }
- void sigusr_handler(int sig, siginfo_t *info, void *context)
- {
- int i = 0;
- if (instance->state > 0 && instance->epid == info->si_pid) {
- for (; instance->sig[i]; ++i);
- if ('\0' != instance->sig[6]) {
- instance->sig[i] = '0' + (sig == SIGUSR2);
- instance->sig[i + 1] = '\0';
- }
- }
- if (0 == instance->state)
- if (instance->epid != NULL) {
- instance->state = 2 + my_putstr("successfully connected\n\n");
- } else {
- instance->epid = info->si_pid;
- instance->state = 1 + my_putstr("enemy connected\n\n");
- send_int(instance, 1);
- }
- }
- void init_signals(navy_t *navy)
- {
- struct sigaction act = {0};
- instance = navy;
- navy->sig = malloc(sizeof(char) * 7);
- navy->sig[0] = '\0';
- navy->sig[6] = '1';
- act.sa_sigaction = &sigusr_handler;
- act.sa_flags = SA_SIGINFO;
- sigaction(SIGUSR1, &act, NULL);
- sigaction(SIGUSR2, &act, NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement