APUE Learning Example Source Code
Guo Wenxue
2018-11-10 6d9d48a77e76851362ade3e441e1e993c83ef3f8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
 
int  g_var = 6;
char g_buf[]="A string write to stdout.\n";
int main (int argc, char **argv)
{
        int     var = 88;
        pid_t   pid;
 
        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)
        {
                printf("Child process  PID[%d] running...\n", getpid());
                g_var ++;
                var ++;
        }
        else
        {
                printf("Parent process PID[%d] waiting...\n", getpid());
                sleep(1);
        }
 
        printf("PID=%ld, g_var=%d, var=%d\n", (long) getpid(), g_var, var);
        return 0;
}