Листинг 15.1 .Клиент передает серверу длинное целое для возведения его в квадрат
//doors/client1.c
1 #include "unpipc.h"
2 int
3 main(int argc, char **argv)
4 {
5 int fd;
6 long ival, oval;
7 door_arg_t arg;
8 if (argc != 3)
9 err_quit("usage: client1 ");
10 fd = Open(argv[1], O_RDWR); /* открываем дверь */
11 /* задаем аргументы и указатель на результат */
12 ival = atol(argv[2]);
13 arg.data_ptr = (char *) &ival; /* аргументы */
14 arg.data_size = sizeof(long); /* размер аргументов */
15 arg.desc_ptr = NULL;
16 arg.desc_num = 0;
17 arg.rbuf = (char *) &oval; /* результат */
18 arg.rsize = sizeof(long); /* размер результата */
19 /* вызываем процедуру на сервере и выводим результат */
20 Door_call(fd, &arg);
21 printf("result: %ld\n", oval);
22 exit(0);
23 }