これが私のコードです:
#include <stdio.h>
#include <unistd.h>
static volatile int t=0;
int main(void){
int i;
for (i=0; i<2; i++){
fork();
printf("pid:%d: addr:%d val:%d\n", getpid(), &t, t++);
}
printf("pid:%d: addr:%d val:%d\n", getpid(), &t, t++);
return 0;
}
そのような出力:
pid:16232: addr:134518684 val:0
pid:16233: addr:134518684 val:0
pid:16232: addr:134518684 val:1
pid:16232: addr:134518684 val:2
pid:16234: addr:134518684 val:1
pid:16234: addr:134518684 val:2
pid:16233: addr:134518684 val:1
pid:16233: addr:134518684 val:2
pid:16235: addr:134518684 val:1
pid:16235: addr:134518684 val:2
グローバル変数tのアドレスは同じですが、すべてのスレッドが同じ変数tを操作していますか?valは「0、1、2、3、4、5、...」だったと思いますが、どうすればよいですか?