You are on page 1of 1

1 # 

 include 
  

counter 


"
2
3  oid 
v  counter 
:: 
process 

func 
()
4 {
 
5   char 
   c 
;
6      
int 
 shmidct 

shmid 
;
7      
key 

t keyct 

key 
;
8      
char 
  

ct 
,  

shm 
;
9      
char 
 buffer 

SHMSZ 

;
10
11      
/*
12       
*  
We 

ll name our shared memory segment
13       
* " 
5678 
".
14       
*/
15      
keyct  
=  
5677 
;
16      
key  
=  
5678 
;
17
18      
/*
19       
*  
Create the segment 
.
20       
*/
21      
if 
  
(( 
shmidct  
=  
shmget 

keyct 
,  

,  
IPC 

CREAT  
|  
0666 
))  
<  

)  
{
22          
perror 


shmget ct 


;        
23      
}
24      
if 
  
(( 
shmid  
=  
shmget 

key 
,  
SHMSZ 
,  
IPC 

CREAT  
|  
0666 
))  
<  

)  
{
25          
perror 


shmget 


;        
26      
}
27
28      
/*
29       
*  
Now we attach the segment to our data space 
.
30       
*/
31      
if 
  
(( 
ct  
= ( 
char 
*) 
shmat 

shmidct 
,  
NULL 
,  

)) == ( 
char 
  
*) ‐ 

)  
{
32          
perror 


shmat ct 


;        
33      
}
34      
if 
  
(( 
shm  
= ( 
char 
*) 
shmat 

shmid 
,  
NULL 
,  

)) == ( 
char 
  
*) ‐ 

)  
{
35          
perror 


shmat 


;        
36      
}
37     
38      
val  
=  

;
39     
40   while 
  ( 

)
41   {
 
42     fgets 
  ( 
shm 
,  
SHMSZ 
,  
stdin 

;
43     * 
 ct 




;
44     val  
  =  
val  
+  

;
45     wait 
  ( 


;
46     while 
    
(* 
ct  
!=  




;    
47   } 
 
48 }
 
49

You might also like