#include \"apue.h\"
2
3 int glob=6;//why it just increment???
4 int
5 main(void)
6 {
7 int var=88;
8 pid_t pid;
9 char buf[] = \"hello worlds!\\n\";
10
11 if(write(STDOUT_FILENO, buf, sizeof(buf)) !=sizeof(buf))
12 err_sys(\"write error!!!\");
13
14 if( (pid=vfork())<0){
15 err_sys(\"fork error!!\");
16 }else if(pid==0){
17 var++;
18 glob++;
19 //_exit(0); child process exit
20 }//else
21
22 printf(\"glob : %d , var : %d pid : %d\\n\",glob, var, getpid());
23 //_exit(0);
24
25 return 0;
26
27 }
이거 컴파일해서 실행시키면은
hello worlds!
glob : 계속증가 var : 89 or -1081319768 pid : 고정값
이렇게 계속 반복되거든.. vfork()로 자식프로세스가 별도로 생성되면 부모메모리를 공유하게되는데... 왜 main함수내의 지역변수로 선언된
var는 한번 증가하고 계속 이상한값이 되고, glob은 계속 증가하게 되지..?? 왜 그렇지.ㅠ.ㅠ 계속 공유하게 되면 glob값증가할뿐더로
동시에 var 값도 계속 증가해야 되는 것 아닌가..? 궁금해 미치겠땅.ㅠㅠ
2
3 int glob=6;//why it just increment???
4 int
5 main(void)
6 {
7 int var=88;
8 pid_t pid;
9 char buf[] = \"hello worlds!\\n\";
10
11 if(write(STDOUT_FILENO, buf, sizeof(buf)) !=sizeof(buf))
12 err_sys(\"write error!!!\");
13
14 if( (pid=vfork())<0){
15 err_sys(\"fork error!!\");
16 }else if(pid==0){
17 var++;
18 glob++;
19 //_exit(0); child process exit
20 }//else
21
22 printf(\"glob : %d , var : %d pid : %d\\n\",glob, var, getpid());
23 //_exit(0);
24
25 return 0;
26
27 }
이거 컴파일해서 실행시키면은
hello worlds!
glob : 계속증가 var : 89 or -1081319768 pid : 고정값
이렇게 계속 반복되거든.. vfork()로 자식프로세스가 별도로 생성되면 부모메모리를 공유하게되는데... 왜 main함수내의 지역변수로 선언된
var는 한번 증가하고 계속 이상한값이 되고, glob은 계속 증가하게 되지..?? 왜 그렇지.ㅠ.ㅠ 계속 공유하게 되면 glob값증가할뿐더로
동시에 var 값도 계속 증가해야 되는 것 아닌가..? 궁금해 미치겠땅.ㅠㅠ
glob와 var의 주소값을 볼 필요가 있겠네요
디버깅 해보세요