实例代码
#include <iostream>
#include <unistd.h>
int globvar = 6;
char buf[] = "a write to stdout\n";
int main(int argc, const char * argv[]) {
int var;
pid_t pid;
var = 88;
if (write(STDOUT_FILENO, buf, sizeof(buf) - 1) != sizeof(buf) - 1)
printf("write error");
printf("before fork\n");
if ((pid = fork()) < 0) {
printf("fork error");
} else if (pid == 0) {
globvar++;
var++;
} else {
sleep(2);
}
printf("pid = %ld, glob = %d, var = %d\n", (long)getpid(), globvar, var);
exit(0);
}
输出结果
a write to stdout
before fork
pid = 1504, glob = 7, var = 89
pid = 1502, glob = 6, var = 88