#include <sys/types.h>
0 O( |/ n1 y( `9 q6 l5 y+ n3 t#include <stdio.h>. X8 o4 @% W1 T6 |$ @2 L
#include <sys/ipc.h>9 ]8 [% I& l3 ^' T7 A/ \5 c, _7 [2 m3 ^
#include <sys/shm.h>. B) J9 |; [: o
( `0 D0 f7 j# \, l* D+ h* |int main (int argc,char *argv[])3 X7 X. D5 H& d& X7 Y1 i
{. t% o2 T" w/ m8 v8 u1 F1 G5 _
int shm_id;8 y1 J4 u5 f9 t( U( b* l
key_t key;7 B: G7 s P8 G; Y6 Y) V
int size;5 n) C+ C$ P2 n5 ?3 z( l& t# t* A
char *shm_addr,*head,*ptr,data[64],*str;
5 }" a# S/ K5 j% c# [ 1 ?' R! M8 Y" d$ k+ K; Q( n' m" F
size=sizeof (char) * 64;; Y* \* {/ ]3 ?' @5 y$ \. c
switch (*argv[1])
* x: v; ]9 r7 {( \3 J4 E {; m/ _. h! J0 N
case 'c':
; l/ {/ S7 A/ ?8 A key = ftok("/work/oo",0);
5 Z$ W+ T: o& D! S2 F8 h: [0 r shm_id = shmget (key,size,IPC_CREAT|0660);( a; Z3 |, `. m; M
if (shm_id==-1)9 f$ g4 V) X# ~. [
{6 d3 z' n" u* o8 d9 {1 V9 m
return (-1);/ g, _% G! h. S5 U! ]8 S, _" q( S' M
}4 D5 h3 P( ` M$ ^- {5 R) z. a
else
, J# I; B' |6 L1 [4 N; r printf ("the shm_id is %d\n",shm_id);
0 P6 q* _) K$ F: n9 f3 \1 j break;' [1 Q3 @$ A( j }1 W" [9 W" t, I
case 'r':
( m! y! o Y# }5 G 6 x7 k7 P* u; Q6 l ^' ]0 ]
; \5 ^8 s8 h" \2 k4 v& R6 g; z printf ("%s\n",data);
! P: X7 _& u( ]8 P3 g( T+ m
( `* s# C2 i' ^& ? break;
. n. K" W& w+ s. J/ s case 'w':
, h( b6 z8 N+ m " T# e0 s1 K, y8 B$ N: D
shm_addr = shmat (shm_id,0,0);" h# A! Q2 m' R% q- J% e/ G' d
shm_addr = data;) N& Z1 X) M* c) L6 f9 h+ a( K
while(*argv[2]!='\0')
4 d' Q& f8 q6 c/ a {4 t, w! G1 E* P* A8 n$ I5 v
*shm_addr = *argv[2];' ~( ~7 {3 m, Y2 o2 u! V) K
shm_addr++;
; B+ ~1 ^" D% R+ r2 a9 B3 e argv[2]++;
: [: k! ~7 ~- M }' B( k4 v5 \3 v. s! K
& B2 B/ d9 t3 _0 q, B" S' u1 V* H' f- ~
printf("%s\n",data);) F6 y: Y& N3 T! ?; @
break;9 j3 S- `: @7 \, ?4 o
case 'd':) }0 c. Y ]: R
shmctl(shm_id,IPC_RMID,0);( _0 p, o6 V, W( S
break;4 |; ^+ _; Q2 y
default : printf("error\n");
# Y# H% h# | e6 B; ~6 f } . o( B% a9 M+ V7 {
}
( b* l3 i- G: u- J& x
/ S6 f5 U% J X9 Q! u/ h b+ ?2 D- ?' ?2 d
我自己写的,为什么字符串存不入共享内存中呢??高手解答下