求助fork问题

C、C++和Java语言
回复
儒家辉少
帖子: 3
注册时间: 2011-05-05 14:47
送出感谢: 0
接收感谢: 0

求助fork问题

#1

帖子 儒家辉少 » 2011-05-08 8:37

1 #include <unistd.h>
2 #include <stdio.h>
3 #include<stdlib.h>
4 int glob=6;
5 char buf[]="a write to stdout\n";
6 int main(void)
7 {
8 int var;
9 pid_t pid;
10 var=88;
11 if(write(STDOUT_FILENO,buf,sizeof(buf)-1) !=sizeof(buf)-1)
12 { printf("write error");}
13 printf("before fork\n");
14 if (pid=fork()<0){
15 printf("fork error");}
16 if (0==pid){
17 glob++;
18 var++;
19 }
20 sleep(2);
21 printf("pid=%d,golb=%d,var=%d\n",getpid(),glob,var);
22 exit(0);
23 }
24
administrator@ubuntu:~/gaoji$ ./a.out
a write to stdout
before fork
pid=2559,golb=7,var=89
pid=2558,golb=7,var=89
administrator@ubuntu:~/gaoji$


我想知道为什么,这里父进程,和子进程共用变量的内存空间的!!
这是APUE里面的题!!!
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

Re: 求助fork问题

#2

帖子 BigSnake.NET » 2011-05-09 20:25

代码: 全选

if ((pid=fork()) <0)
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
儒家辉少
帖子: 3
注册时间: 2011-05-05 14:47
送出感谢: 0
接收感谢: 0

Re: 求助fork问题

#3

帖子 儒家辉少 » 2011-05-09 23:25

BigSnake.NET 写了:

代码: 全选

if ((pid=fork()) <0)
哦,原来是这样的!!多谢!!
回复

回到 “C/C++/Java”