0% found this document useful (0 votes)
431 views

Counter

1. The document defines a function called process_func that is used to share memory between processes. 2. It first declares variables needed to create, open, and attach to a shared memory segment. It will name the segment "5678". 3. It then creates and attaches to the shared memory segment, checking for errors. Data can now be shared between processes by writing to the memory segment.

Uploaded by

tom76925
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
431 views

Counter

1. The document defines a function called process_func that is used to share memory between processes. 2. It first declares variables needed to create, open, and attach to a shared memory segment. It will name the segment "5678". 3. It then creates and attaches to the shared memory segment, checking for errors. Data can now be shared between processes by writing to the memory segment.

Uploaded by

tom76925
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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