|
在apue例题8-1的程序清单如下:
#include "apue.h"
int glob=6;
char buf[]="a write to stdout\n";
int main(void)
{
int var;
pid_t pid;
var=88;
if(write(STDOUT_FILENO,buf,sizeof(buf)-1)!=sizeof(buf)-1)
err_sys("write error");
printf("before fork\n");
if((pid=fork())<0)
{
err_sys("fork error");
}
else if(pid==0)
{
glob++;
var++;
}
else
{
sleep(2);
}
printf("pid=%d,glob=%d,var=%d\n",getpid(),glob,var);
exit(0);
}
得到的结果是:
a write to stdout
before fork
pid=3314,glob=7,var=89
pid=3313,glob=6,var=88
在这里,程序中只有一条printf("pid=%d,glob=%d,var=%d\n",getpid(),glob,var);语句,结果却有两条信息,怎么回事?fork()函数返回两个值,一个是子进程为0,另一个是父进程,不是0.为什么这里两个pid都不是0?
望高手指点,不胜感激 |
|