- 论坛徽章:
- 0
|
这是那本经典unix环境高级编程的一例,请教一下为什么把标准输出重定向以后会是那样的输出,书上讲的听的不太明白。
#include <sys/types.h>;
int glob = 6;
char buf[] = "a write to stdout\n";
int
main(void)
{
int var;
pid_t pid;
var = 88;
if( write( 1, buf, sizeof(buf) - 1) != sizeof(buf) - 1 )
printf( "write error" );
printf( " before fork\n" );
if( (pid = fork()) < 0 )
printf( "fork error" );
else if( pid == 0 )
{
glob ++;
var ++;
}
else
sleep(2);
printf( "pid = %d, glob = %d, var = %d\n", getpid(), glob, var );
exit(0);
}
cc forktest.c 之后执行a.out
$a.out
a write to stdout
before fork
pid = 22210, glob = 7, var = 89
pid = 40928, glob = 6, var = 88
但如果把标准输出重定向到temp.out
$a.out >; temp.out
cat temp.out
a write to stdout
before fork
pid = 22202, glob = 7, var = 89
before fork
pid = 40892, glob = 6, var = 88
为什么呀?????? |
|