Листинг А.2. Функции reader и writer
//bench/bw_pipe.cvoid
33 void
34 writer(int contfd, int datafd)
35 {
36 int ntowrite;
37 for(;;) {
38 Read(contfd, &ntowrite, sizeof(ntowrite));
39 while (ntowrite > 0) {
40 Write(datafd, buf, xfersize);
41 ntowrite –= xfersize;
42 }
43 }
44 }
45 void
46 reader(int contfd, int datafd, int nbytes)
47 {
48 ssize_t n;
49 Write(contfd, &nbytes, sizeof(nbytes));
50 while ((nbytes > 0) &&
51 ((n = Read(datafd, buf, xfersize)) > 0)) {
52 nbytes –= n;
53 }
54 }