#include #include #include /* Try this variant also, and estimate the number of lines printed. */ /* void f ( int n ) { int i; for (i=n-1; i>=1; --i) { if (!fork()) { printf("Hi %d, %d, n = %d, i = %d\n", getppid(), getpid(), n, i); fflush(stdout); f(i); if (n % 3 == 1) return; } } } */ void f ( int n ) { int i; for (i=n-1; i>=1; --i) { if (!fork()) { printf("Hi %d, %d, n = %d, i = %d\n", getppid(), getpid(), n, i); fflush(stdout); f(i); return; } } } int main ( int argc, char *argv[] ) { int n; n = (argc > 1) ? atoi(argv[1]) : 4; f(n); usleep(1000); exit(0); }