Files
42_INT_05_minitalk/srcs/client.c
2021-09-03 16:45:46 +02:00

52 lines
975 B
C

#include "client.h"
int usage(void)
{
ft_putstr("usage: ./client [server pid] [message]\n");
return (0);
}
void send_char(char c, int mask, int server_pid)
{
if ((c & mask) != 0)
kill(server_pid, SIGUSR1);
if ((c & mask) == 0)
kill(server_pid, SIGUSR2);
}
void send_message(int sig_num)
{
(void)sig_num;
g_client.mask >>= 1;
if (g_client.mask == 0)
{
g_client.mask = 1 << 6;
if (g_client.text[g_client.count_char] == '\0')
g_client.done = 1;
(g_client.count_char)++;
}
if (g_client.done == 0)
send_char(g_client.text[g_client.count_char], g_client.mask, g_client.srv_pid);
}
void init_client(int pid, char *msg)
{
g_client.mask = 1 << 7;
g_client.count_char = 0;
g_client.srv_pid = pid;
g_client.text = msg;
g_client.done = 0;
}
int main(int ac, char **av)
{
signal(SIGUSR1, send_message);
if (ac != 3)
return (usage());
init_client(ft_atoi(av[1]), av[2]);
kill((int)getpid(), SIGUSR1);
while (g_client.done == 0)
;
return (0);
}