dans server remplace signal par sigaction pour recuperer sender pid ok
This commit is contained in:
BIN
builds/client.o
BIN
builds/client.o
Binary file not shown.
BIN
builds/server.o
BIN
builds/server.o
Binary file not shown.
@@ -9,6 +9,7 @@ int usage(void)
|
||||
void send_char(int server_pid, char c)
|
||||
{
|
||||
int mask;
|
||||
|
||||
mask = 1 << 6;
|
||||
while (mask != 0)
|
||||
{
|
||||
@@ -17,7 +18,7 @@ void send_char(int server_pid, char c)
|
||||
if ((c & mask) == 0)
|
||||
kill(server_pid, SIGUSR2);
|
||||
mask >>= 1;
|
||||
usleep(20);
|
||||
usleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,5 +37,6 @@ int main(int ac, char **av)
|
||||
if (ac != 3)
|
||||
return (usage());
|
||||
send_message(ft_atoi(av[1]), av[2]);
|
||||
ft_putnbrendl((int)getpid());
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
#include "minitalk.h"
|
||||
|
||||
void sig_handler_1(int sig_num)
|
||||
void sig_handler_1(int sig_num, siginfo_t *info, void *context)
|
||||
{
|
||||
(void)sig_num;
|
||||
(void)context;
|
||||
kill(info->sa__pid, SIGUSR1);
|
||||
message.character ^= 1 << (6 - message.count_bits);
|
||||
message.count_bits++;
|
||||
}
|
||||
|
||||
void sig_handler_2(int sig_num)
|
||||
void sig_handler_2(int sig_num, siginfo_t *info, void *context)
|
||||
{
|
||||
(void)sig_num;
|
||||
(void)context;
|
||||
kill(info->sa__pid, SIGUSR2);
|
||||
message.count_bits++;
|
||||
}
|
||||
|
||||
@@ -38,8 +42,15 @@ void concat_msg()
|
||||
|
||||
int main()
|
||||
{
|
||||
signal(SIGUSR1, sig_handler_1);
|
||||
signal(SIGUSR2, sig_handler_2);
|
||||
struct sigaction act_1;
|
||||
struct sigaction act_2;
|
||||
|
||||
act_1.sa_flags = SA_SIGINFO;
|
||||
act_1.sa_sigaction = sig_handler_1;
|
||||
act_2.sa_flags = SA_SIGINFO;
|
||||
act_2.sa_sigaction = sig_handler_2;
|
||||
sigaction(SIGUSR1, &act_1, NULL);
|
||||
sigaction(SIGUSR2, &act_2, NULL);
|
||||
ft_putnbrendl((int)getpid());
|
||||
init_message();
|
||||
while (1)
|
||||
@@ -48,6 +59,9 @@ int main()
|
||||
}
|
||||
|
||||
/*
|
||||
** # # # # # # # # # # # # # # # # # # # #
|
||||
** INSTRUCTIONS
|
||||
**
|
||||
** allowed functions :
|
||||
** - write
|
||||
** - signal
|
||||
@@ -63,19 +77,53 @@ int main()
|
||||
** - usleep
|
||||
** - exit
|
||||
**
|
||||
**
|
||||
** cmm
|
||||
** deii
|
||||
** enlc
|
||||
** ctlr
|
||||
** iiio
|
||||
** 0.0010
|
||||
** 10
|
||||
**
|
||||
** you can only use two signals :
|
||||
** - SIGUSR1
|
||||
** - SIGUSR2
|
||||
**
|
||||
**
|
||||
** # # # # # # # # # # # # # # # # # # # #
|
||||
** ressources
|
||||
**
|
||||
** use of getpid : https://www.includehelp.com/c/getpid-and-getppid-functions-in-c-linux.aspx
|
||||
** use of signal : https://linuxhint.com/signal_handlers_c_programming_language
|
||||
** use of sigaction : https://stackoverflow.com/a/17572787/9497573
|
||||
** standard signal vs real time signals (with queue option) : https://www.softprayog.in/programming/posix-real-time-signals-in-linux
|
||||
**
|
||||
**
|
||||
** # # # # # # # # # # # # # # # # # # # #
|
||||
** UNITS PREFIX
|
||||
**
|
||||
** times in seconds, deci, centi, milli, micros and nano :
|
||||
**
|
||||
** c m m
|
||||
** d e i i n
|
||||
** e n l c a
|
||||
** c t l r n
|
||||
** i i i o o
|
||||
**
|
||||
** 0 . 0 0 1 0 0
|
||||
**
|
||||
**
|
||||
** # # # # # # # # # # # # # # # # # # # #
|
||||
** CODE TO CALCULATE TIME IN MICROSECONDS
|
||||
**
|
||||
** found here https://stackoverflow.com/questions/5833094/get-a-timestamp-in-c-in-microseconds
|
||||
**
|
||||
** #include <stdint.h>
|
||||
** #include <sys/time.h>
|
||||
** uint64_t micros() {
|
||||
** struct timeval tv;
|
||||
** gettimeofday(&tv,NULL);
|
||||
** return tv.tv_sec*(uint64_t)1000000+tv.tv_usec;
|
||||
** }
|
||||
** uint64_t t1;
|
||||
** uint64_t t2;
|
||||
**
|
||||
**
|
||||
** # # # # # # # # # # # # # # # # # # # #
|
||||
** BINARY NUMBERS
|
||||
**
|
||||
** 1 000 0
|
||||
** 2 001 1 2
|
||||
** 3 002 10
|
||||
@@ -204,5 +252,6 @@ int main()
|
||||
** 126 125 1111101
|
||||
** 127 126 1111110
|
||||
** 128 127 1111111 64
|
||||
** # # # # # # # # # # # # # # # # # # # #
|
||||
**
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user