#include "apue.h"
int glob=6;
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 )
perror("write error");
printf("befor fork\n");
if( (pid=fork())<0 )
{
perror("fork error");
}
else if(pid==0)
{
glob++;
var++;
}
else
{
sleep(2);
}
printf("pid=%d, glob=%d, var=%d\n",getpid(),glob,var);
printf("after fork\n");
return 0;
}
// 执行结果
$ a.out
a write to stdout
befor fork
pid=3675, glob=7, var=89
after fork
pid=3674, glob=6, var=88
after fork
//为什么执行后 befor fork输出2次 而上面的只输出一次
$ a.out > temp.out
$ cat temp.out
a write to stdout
befor fork
pid=3677, glob=7, var=89
after fork
befor fork
pid=3676, glob=6, var=88
after fork
D调漫步 于 2011-08-06 09:38:58发表:
路过
wenhao1129 于 2011-08-02 20:44:28发表:
我是来帮顶的
farell 于 2011-08-02 17:20:49发表:
看了你的头文件,就知道你程序出自哪里了,书上解释很清楚
绿色圣光 于 2011-07-15 13:02:42发表:
我错了。
绿色圣光 于 2011-07-14 09:10:52发表:
不清楚,后面的那俩befor fork都是父进程输出的,怎么会输出两遍呢?