#include #include #include int glob = 6; char buf[] = "a write to standard output\n"; int main( void ) { int var = 88; /* local variable on the stack */ pid_t pid; if ( write( STDOUT_FILENO, buf, sizeof (buf) - 1 ) != sizeof( buf ) - 1 ) { fprintf( stderr, "write error" ); exit( 1 ); } printf( "before fork\n" ); if ( ( pid = fork() ) < 0 ) { fprintf( stderr, "fork error\n" ); exit( 1 ); } else if ( pid == 0 ) { /* child */ ++glob; ++var; } else sleep( 2 ); /* parent */ printf( "pid = %d, glob = %d, var = %d\n", getpid(), glob, var ); exit( 0 ); }