- 论坛徽章:
- 0
|
- #include "ourhdr.h"
- int glob = 6;
- char buf[] = "a waite to stdout\n";
- int main()
- {
- int var;
- pid_t pid;
- var = 88;
- if(write(STDOUT_FILENO,buf,sizeof(buf)-1) != sizeof(buf)-1)
- {
- return 1;
- }
- printf("before fork\n");
- if((pid = fork()) < 0)
- {
- return 1;
- }
- else if(pid == 0)
- {
- glob++;
- var++;
- }
- else
- {
- sleep(2);
- }
- printf("pid=%d,glob=%d,var=%d\n",getpid(),glob,var);
- exit(0);
- }
复制代码 执行结果:
a waite to stdout
before fork
pid=4974,glob=7,var=89 (子进程打印)
pid=4973,glob=6,var=88 (父进程打印)
因为sleep的原因,所以确定先进行子进程的打印,并且从结果来看,肯定是父进程先执行了,因为父进程的打印结果中,变量没有+1。
是不是在子进程先执行的情况下,父进程的打印结果会和子进程一样?也就是说父进程会打印变量+1后的值?
不知道我理解的对不对。有些迷惑,多谢指教。 |
|