Witam. Mam do napisania 2 programy, klienta i serwera. Komunikować się mają za pomocą fifo.

Klient ma wysyłać do publicznego FIFO serwera ciąg znaków zakończony znakiem nowej
linii. Ciąg ten ma postać NAZWA_FIFO_KLIENTA:POLECENIE\n. Serwer forkuje i wysyła poprzez prywatne FIFO klienta odpowiedź (wynik działania polecenia) zakończoną znakiem nowej linii. Klient po otrzymaniu odpowiedzi kończy działanie.
Dodatkowo serwer ma reagować na sygnał SIGUSR1, kończąc swoje działanie. Podczas kończenia programów należy posprzątać FIFO.

Czy mógłby mi ktoś schematycznie napisać co powinno znaleźć się w każdym z programów? Chodzi mi o rozjaśnienie idei działania tego programu.

UPDATE:

Dla serwera udało mi się coś takiego stworzyć, ale nie wiem nadal, czy dobrze to rozumiem.

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <fcntl.h>

#define SERWER_FIFO "/tmp/serwer_fifo_kuropatwa"

int jaki_wynik,pid, v;
int f_serv, f_cli;
string line[] = {};

int main(int argc, char *argv[])
{
    /*tworzy FIFO publiczne do ktorego swoje zapytania beda zapisywali klienci a serwer bedzie je odczytywal */
    jaki_wynik=mkfifo(SERWER_FIFO, 0600);

    /*otwiera FIFO publiczne do odczytu*/
    f_serv = open(SERWER_FIFO, O_RDONLY | O_NONBLOCK);
    printf("Deskryptor f_serv: %d\n", f_serv);

    while (1)
    {
        pid = fork();
                /*proces potomny */
            if(pid == 0) 
            {
                        /*serwer czyta z FIFO publicznego zapytanie wyslane przez klienta*/        
                v = read(f_cli, line, sizeof(char) * SIZE_LINE);
                /*usypiam serwer na 1sek, by klient zdazyl utworzyc FIFO prywatne*/
                sleep(1); 
            }
            /*opakowanie bledu*/
            else if(pid == -1) 
            {
                printf("Blad\n");
                exit(1);
            }
    }
return 0;
}