comm_pipes
if (pipe(comm_pipes->parent_ready) < 0) {
close(comm_pipes->child_ready[0]);
close(comm_pipes->child_ready[1]);
static void close_comm_pipes(struct comm_pipes *comm_pipes)
close(comm_pipes->child_ready[0]);
close(comm_pipes->child_ready[1]);
close(comm_pipes->parent_ready[0]);
close(comm_pipes->parent_ready[1]);
struct comm_pipes *comm_pipes)
struct comm_pipes comm_pipes;
ret = setup_comm_pipes(&comm_pipes);
write(comm_pipes->child_ready[1], "0", 1);
while (read(comm_pipes->parent_ready[0], &buf, 1) != 1)
exit(child_memcmp_fn(mem, size, &comm_pipes));
exit(child_memcmp_fn(mem, size / 2, &comm_pipes));
&comm_pipes));
while (read(comm_pipes.child_ready[0], &buf, 1) != 1)
struct comm_pipes *comm_pipes)
write(comm_pipes.parent_ready[1], "0", 1);
write(comm_pipes.parent_ready[1], "0", 1);
write(comm_pipes.parent_ready[1], "0", 1);
close_comm_pipes(&comm_pipes);
write(comm_pipes->child_ready[1], "0", 1);
while (read(comm_pipes->parent_ready[0], &buf, 1) != 1)
typedef int (*child_fn)(char *mem, size_t size, struct comm_pipes *comm_pipes);
struct comm_pipes comm_pipes;
ret = setup_comm_pipes(&comm_pipes);
exit(fn(mem, size, &comm_pipes));
while (read(comm_pipes.child_ready[0], &buf, 1) != 1)
write(comm_pipes.parent_ready[1], "0", 1);
write(comm_pipes.parent_ready[1], "0", 1);
write(comm_pipes.parent_ready[1], "0", 1);
close_comm_pipes(&comm_pipes);
struct comm_pipes comm_pipes;
ret = setup_comm_pipes(&comm_pipes);
write(comm_pipes.child_ready[1], "0", 1);
while (read(comm_pipes.parent_ready[0], &buf, 1) != 1)
while (read(comm_pipes.child_ready[0], &buf, 1) != 1)
write(comm_pipes.parent_ready[1], "0", 1);
close_comm_pipes(&comm_pipes);
struct comm_pipes comm_pipes;
ret = setup_comm_pipes(&comm_pipes);
write(comm_pipes.child_ready[1], "0", 1);
while (read(comm_pipes.parent_ready[0], &buf, 1) != 1)
while (read(comm_pipes.child_ready[0], &buf, 1) != 1)
write(comm_pipes.parent_ready[1], "0", 1);
close_comm_pipes(&comm_pipes);
struct comm_pipes comm_pipes;
ret = setup_comm_pipes(&comm_pipes);
write(comm_pipes.child_ready[1], "0", 1);
while (read(comm_pipes.parent_ready[0], &buf, 1) != 1)
while (read(comm_pipes.child_ready[0], &buf, 1) != 1)
write(comm_pipes.parent_ready[1], "0", 1);
write(comm_pipes.parent_ready[1], "0", 1);
close_comm_pipes(&comm_pipes);
static int setup_comm_pipes(struct comm_pipes *comm_pipes)
if (pipe(comm_pipes->child_ready) < 0) {