/**
* 功能:fork函数创建子进程
* 时间:2015年12月9日15:30:55
* 作者:cutter_point
*/
#include "../util/apue.h"
#include "../util/error.c"
int globvar = 6; //设定全局变量
char buf[] = "写出到标准输出\n";
int main(int argc, char *argv[])
{
int var; //定义变量
pid_t pid; //进程id
var = 88;
if(write(STDOUT_FILENO, buf, sizeof(buf) - 1) != sizeof(buf) - 1)
{
err_sys("标准输出失败");
}//if
//我们进行一下冲洗
fflush(stdout);
printf("在fork之前\n");
if(pid = fork() < 0)
{
err_sys("创建子进程失败\n");
}//if
else if(pid == 0)
{
globvar++;
var++;
}//else if
else
{
sleep(5); //主进程休息5秒
}//else
printf("进程pid=%ld, glob=%d, var=%d\n", (long)getpid(), globvar, var);
exit(0);
}
结果:
对于printf的缓冲
结果是:
但是:
运行的结果是:
为什么?
因为和printf的缓冲机制有关,标准输出是以换行符作为fflush冲洗的标准的
具体:http://blog.csdn.net/koches/article/details/7787468