named-client.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #include <sys/stat.h> //mkfifo, S_I...- для работы с очередями FIFO, флаги
  2. #include <fcntl.h> //O_... - флаги для открытия FIFO
  3. #include <unistd.h> //для использования системных функций линукса
  4. #include <stdio.h> //для стандартных функций ввода-вывода
  5. #include <stdlib.h> //для работы с памятью (free)
  6. #include <string.h> //для работы со строками
  7. #define PATHSERVER "/tmp/FIFOserver" // общедоступное имя сервера
  8. #define PATHCLIENT "/tmp/FIFOclient" // имя конкретного клиента
  9. #define MESSAGE "Hello world"
  10. struct DATA // структура для обмена данными с сервером
  11. {
  12. char clientFIFOPath[20];
  13. char str[1000];
  14. };
  15. typedef struct DATA DATA;
  16. int main()
  17. {
  18. mkfifo(PATHCLIENT, 0664); // создаем очередь со следующими правами (Для всех групп - значение константно): rw user, rw group, r other
  19. int fifoWrite = open(PATHSERVER, O_WRONLY); // открываем очередь на запись для сервера
  20. DATA data = {PATHCLIENT, MESSAGE}; // инициализация объекта
  21. write(fifoWrite, &data, sizeof(DATA)); // пишем письма
  22. close(fifoWrite); //
  23. int fifoRead = open(PATHCLIENT, O_RDONLY); // открываем очередь на чтение для клиента
  24. char *answer = calloc(1000, sizeof(char)); // ответик
  25. read(fifoRead, answer, sizeof(answer)); // читаем
  26. printf("Ответ сервера: %s\n", answer); // выводим
  27. free(answer);
  28. }