на главную | войти | регистрация | DMCA | контакты | справка | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


моя полка | жанры | рекомендуем | рейтинг книг | рейтинг авторов | впечатления | новое | форум | сборники | читалки | авторам | добавить



Листинг 15.2. Сервер, возводящий длинное целое в квадрат

//doors/server1.c

1  #include "unpipc.h"


2  void

3  servproc(void *cookie, char *dataptr, size_t datasize,

4   door_desc_t *descptr, size_t ndesc)

5  {

6   long arg, result;

7   arg = *((long *) dataptr);

8   result = arg * arg;

9   Door_return((char *) &result, sizeof(result), NULL, 0);

10 }


11 int

12 main(int argc, char **argv)

13 {

14  int fd;

15  if (argc != 2)

16   err_quit("usage: server1 ");

17  /* создание двери и связывание ее с файлом */

18  fd = Door_create(servproc, NULL, 0);

19  unlink(argv[1]);

20  Close(Open(argv[1], O_CREAT | O_RDWR, FILE_MODE));

21  Fattach(fd, argv[1]);

22  /* функция servproc() обрабатывает все запросы клиентов */

23  for (;;)

24   pause();

25 }


Вызов процедуры на сервере и вывод результата | UNIX: взаимодействие процессов | Процедура сервера