Bonjour a tous,
Pour un projet, je dois coder une bataille navale ds le terminal, en envoyant des signaux entre deux programme en utilisant leur PID.
Je dois donc envoyer des coordonnées uniquement avec les signaux SIGUSR1 et SIGUSR2, et uniquement en utilisant uniquement les fonctions : open, close, read, write, lseek, malloc, free, getpid, kill, signal,sigaction, sigemptyset, setcontext, getcontext, usleep, nanosleep, pause.
Je précise par ailleurs que j'ai déjà lu tt les man des fonctions.
Mon idée pour transmettre des information a un autre programme : envoyer par exemple 45 signaux a un prog et 45 correspondrais a la position (4 = D et 5 = 5) soit D5.
Cependant, je n'arrive pas a stopper la fonction signal qui tourne ds une boucle infini.
Le prog qui reçoit :
Le prog qui émet un signal : (prends en seul paramètre, le PID du prog qui reçois)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <stdlib.h> #include <unistd.h> #include <include/my.h> #include <sys/types.h> #include <signal.h> int value = 0; void test() { value += 1; my_putstr("value ="); my_put_nbr(value); my_putchar('\n'); } int main(int argc, char **argv) { my_putstr("my_pid : "); my_put_nbr(getpid()); my_putchar('\n'); my_putstr("waiting for enemy connection..."); while(1) { signal(SIGUSR1, test); } my_putstr("test"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <stdlib.h> #include <unistd.h> #include <include/my.h> #include <sys/types.h> #include <signal.h> #include <fcntl.h> #include <stdio.h> int main(int argc, char **argv) { int x = 0; while(x != 45) { kill(my_getnbr(argv[1]), SIGUSR1); sleep(0.1); x++; } my_putstr("test"); }
Partager