Листинг 15.23. Процедура сервера, выводящая свой идентификатор потока дважды
//doors/serverintr3.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 printf("thread id %ld called\n", pr_thread_id(NULL));
8 sleep(6); /* даем клиенту возможность перехватить SIGCHLD */
9 arg = *((long*)dataptr);
10 result = arg * arg;
11 printf("thread id %ld returning\n", pr_thread_id(NULL));
12 Door_return((char *) &result, sizeof(result), NULL, 0);
13 }
В листинге 15.24 приведен текст программы-клиента.