Lines Matching full:fd
19 #define SETUP(fd, rfds, tv) do { \ argument
21 FD_SET((fd), &(rfds)); \
59 child(int fd, int num) in child() argument
67 fd = open(FIFONAME, O_RDONLY | O_NONBLOCK); in child()
68 if (fd < 0) in child()
71 if (fd >= FD_SETSIZE) in child()
72 errx(1, "fd = %d too large for select()", fd); in child()
75 SETUP(fd, rfds, tv); in child()
76 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
90 report(num++, "0", 1, FD_ISSET(fd, &rfds)); in child()
106 SETUP(fd, rfds, tv); in child()
107 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
109 report(num++, "1", 0, FD_ISSET(fd, &rfds)); in child()
115 SETUP(fd, rfds, tv); in child()
116 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
118 report(num++, "2", 1, FD_ISSET(fd, &rfds)); in child()
119 if (read(fd, buf, sizeof buf) != 1) in child()
121 SETUP(fd, rfds, tv); in child()
122 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
124 report(num++, "2a", 0, FD_ISSET(fd, &rfds)); in child()
130 SETUP(fd, rfds, tv); in child()
131 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
133 report(num++, "3", 1, FD_ISSET(fd, &rfds)); in child()
139 * start quite from scratch since the read fd is not new. Check in child()
146 SETUP(fd, rfds, tv); in child()
147 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
149 report(num++, "4", 0, FD_ISSET(fd, &rfds)); in child()
155 SETUP(fd, rfds, tv); in child()
156 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
158 report(num++, "5", 1, FD_ISSET(fd, &rfds)); in child()
169 SETUP(fd, rfds, tv); in child()
170 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
172 report(num++, "6", 1, FD_ISSET(fd, &rfds)); in child()
173 if (read(fd, buf, sizeof buf) != 1) in child()
175 SETUP(fd, rfds, tv); in child()
176 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
178 report(num++, "6a", 1, FD_ISSET(fd, &rfds)); in child()
193 fd1 = fd; in child()
194 fd = fd2; in child()
195 SETUP(fd, rfds, tv); in child()
196 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
198 report(num++, "6b", 1, FD_ISSET(fd, &rfds)); in child()
199 fd = fd1; in child()
200 SETUP(fd, rfds, tv); in child()
201 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
203 report(num++, "6c", 1, FD_ISSET(fd, &rfds)); in child()
205 SETUP(fd, rfds, tv); in child()
206 if (select(fd + 1, &rfds, NULL, NULL, &tv) < 0) in child()
208 report(num++, "6d", 1, FD_ISSET(fd, &rfds)); in child()
210 close(fd); in child()
217 parent(int fd) in parent() argument
223 fd = open(FIFONAME, O_WRONLY | O_NONBLOCK); in parent()
224 if (fd < 0) in parent()
232 if (write(fd, "", 1) != 1) in parent()
239 if (close(fd) != 0) in parent()
248 fd = open(FIFONAME, O_WRONLY | O_NONBLOCK); in parent()
249 if (fd < 0) in parent()
256 if (write(fd, "", 1) != 1) in parent()
263 if (close(fd) != 0) in parent()
275 int fd[2], num; in main() local
287 fd[0] = -1; in main()
288 fd[1] = -1; in main()
292 fd) != 0) in main()
296 if (pipe(fd) != 0) in main()
305 (void)close(fd[1]); in main()
306 child(fd[0], num); in main()
309 (void)close(fd[0]); in main()
310 parent(fd[1]); in main()