#include /* interleavingRead1.c */ #include #include #include #include int main(void) { pid_t childpid; int i,k,n,fd; char buf[2]; if ((childpid = fork()) == -1) { perror("fork"); return 1; } if ((fd = open("test",O_RDONLY)) == -1) { perror("couldn't open"); return 1; } k = (childpid == 0) ? 1 : 10; /* distinguish parent and child */ for (i=0; i<10; i++) { while((n = read(fd, buf, 1)) == -1 && (errno == EINTR)) {} printf("%2d: %2d --- %c\n", k, k * i, buf[0]); usleep((10 + k) * 20000); } return 0; }