Witam, mam pytanie: czy fork ma dostep do zmiennych procesu macierzystego?
Jesli nie ma, to jak wyglada rozwiazanie przy pomocy pamieci wspoldzielonej?
Mile widziany fragment kodu dla przykladu, jak ta pamiec ustawic, cos w nia wrzucc i podlaczyc sie do niej z forka.
[C] fork
Kod: Zaznacz cały
10 struct komunikat{
11 long type;
12 int value;
13 };
14
15 int main(){
16
17 key_t shmkey , semkey;
18 int shmid , semid;
19 struct komunikat *mem , *ptr;
20 struct sembuf op;
21
22 if((shmkey=ftok("plik" , 128))==-1){
23 perror("ftok1");
24 exit(-1);
25 }
26
27 if((semkey=ftok("plik" , 64))==-1){
28 perror("ftok2");
29 exit(-1);
30 }
31
32 if((shmid=shmget(shmkey , 1024 , IPC_CREAT|IPC_EXCL|0666))==-1){
33 perror("shmget");
34 exit(-1);
35 }
36 printf("shmid: %d\n" , shmid);
37
38 mem = shmat(shmid , 0 , 0);
39 if(mem==NULL){
40 perror("shmat");
41 exit(-1);
42 }
43
44 ptr=mem;
45
46 mem->type=666;
47 mem->value=6;
48
49 ptr+=sizeof(mem);
50
51 ptr->type=777;
52 ptr->value=7;
53
54 sleep(10);
55
56 if(shmdt(mem)==-1){
57 perror("shmdt");
58 exit(-1);
59 }
60
61 if(shmctl(shmid , IPC_RMID , NULL)==-1){
62 perror("shmctl");
63 exit(-1);
64 }
65
66 return 0;
67 }