#include #include #include #include #include int glob = 6; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(int argc, char **argv) { int var; pid_t pid; var = 88; if (write(STDOUT_FILENO, buf, sizeof(buf)-1) != sizeof(buf)-1) { fprintf(stderr, "%s: write error: %s\n", argv[0], strerror(errno)); exit(1); } printf("before fork\n"); if ((pid = fork()) < 0) { fprintf(stderr, "%s: fork error: %s\n", argv[0], strerror(errno)); exit(1); } else if (pid == 0) { /* child */ glob++; var++; } else { /* parent */ sleep(2); } printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var); exit(0); }