fork 관련 질문 올립니다.

quiz76의 이미지

첨부 파일에 관해서 질문올립니다.
결과가 파일 맨 위에 나오는데
도저히 왜 저렇게 나오는지 모르겠습니다 ㅜㅜ

a write to stdout
before fork
my pid:9902 ppid : 9900
pid = 9902, glob = 7 var = 89
my pid:9903 ppid : 9901
pid = 9903, glob = 7 var = 89
pid = 9900, glob = 6 var = 88
pid = 9901, glob = 6 var = 88
minyoub@ubuntu:~/code/sys_prog/fork_test/g_val$ vim upgrade_g_val.c
1 #include
2 #include
3 #include
4
5 int glob = 6;
6 char buf[] = "a write to stdout\n";
7
8 int main( void )
9 {
10 int var = 88;
11 pid_t pid;
12
13 // printf("write : %d\n", write(STDOUT_FILENO, buf, sizeof(buf)));
14
15 if( write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf) )
16 {
17 perror("write error\n");
18 }
19
20 printf("before fork \n");
21
22 if( ( pid = fork() ) < 0 ){
23 perror(" fork error \n");
24 exit(1);
25 }
26 else if( ( pid = fork() ) == 0 ){
27 printf("my pid:%d ppid : %d \n", getpid(), getppid() );
28 glob++;
29 var++;
30 }
31 else
32 sleep(2);
33
34 printf("pid = %d, glob = %d var = %d \n", getpid(), glob, var );
35
36 return 0;
37
38
39 }

File attachments: 
첨부파일 크기
Image icon Cap 2013-11-17 15-17-10-044.jpg114.91 KB
chanik의 이미지

fork()가 일어나면 현프로세스가 복제된 자식프로세스가 만들어집니다. 전역변수, 로컬변수 등도 모두 복제됩니다. 이후에 자식프로세스에서 전역변수인 glob과 로컬변수인 var를 변경하더라도 그것은 복사본에서 일어나는 변화일뿐 그 변화가 부모프로세스에 파급되지는 않습니다.

지금의 실행결과는 이 사실을 잘 보여주는 것 같은데요. 예상하던 결과가 어떤 차이가 있나요?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.