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;
| }
|
|