/* * This is taken from p. 190 of Stevens * * Example of fork function */ #include #include "ourhdr.h" int myGlob = 6; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(void) { int var; /* automatic variable on the stack */ pid_t pid; var = 88; if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1) err_sys("write error"); printf("before fork\n"); /* we don't flush stdout */ if ( (pid = fork()) < 0) err_sys("fork error"); else if (pid == 0) { /* child */ myGlob++; /* modify variables */ var++; } else sleep(2); /* parent */ printf("pid = %d, myGlob = %d, var = %d\n", getpid(), myGlob, var); exit(0); }