在书上看到的例子,是学习fork()创建新进程的时候,发现了printf()的不同的输出情况。
在多次查资料的过程中,发现了居然是printf()的输出和缓冲区有关。
#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
int g_val = 6;
char g_buf[]="A string write to stdout.\n";
int main (int argc, char **argv)
{
int var;
pid_t pid;
var = 88;
if( write(STDOUT_FILENO, g_buf, sizeof(g_buf)-1) < 0)
{
printf("Write string to stdout error: %s\n", strerror(errno));
return -1;
}
printf("Befor fork\n");
if( (pid=fork()) < 0) //在这一句创建子进程
{
printf("fork() error: %s\n", strerror(errno));
return -2;
}
else if( 0 == pid) //pid = 0是子进程
{
g_val ++;