发新话题
打印

About Share Memory!

怎样在两个非亲进程间 共享 2M 内存。      

TOP

不明白你的意思,不知道下面的程序算不算.
, L6 P# |* r9 X! L3 B) E- O//ser.c
: Z+ e" g& \  K#include <sys/types.h>
: J  k/ t* V/ @4 n#include <sys/ipc.h>
$ R: Y% y! ^4 T: Y, U( b4 l& T) m#include <sys/shm.h>
6 L0 k/ T8 }7 m#include <stdio.h>
2 B& i, J: ~" m+ }. J& i: O9 w#define SHMSZ 2*1024*1024: U! {9 c9 g# w, i
& v' a( T9 j, q/ R5 @/ E
int main(void): a- q' s$ ^9 n# B, r6 D
{
7 F% t  d4 V& ]" I5 G! Y: P        char c;
9 @7 u- h! G, I        int shmid;
' t: Y" W8 a* t9 W. R! T$ ^        key_t key;+ t7 y3 T/ M4 t' X+ V
        char* shm,*s;2 f$ G& j8 c' O/ M8 |2 X
        unsigned int i;; U( u+ c6 I% `$ P. W+ b6 w
        & K9 ?, A4 K: p' |6 i! U1 Y
        key=1234;* K) O. L* }/ S& q0 h1 o
        shmid=shmget(key,SHMSZ,IPC_CREAT|0666);4 O% M6 Z4 }" n1 X" t3 ]
        shm=shmat(shmid,NULL,0);' K  v( i' B2 z! D
        s=shm;
, x+ C; I' q* M3 N        for(i=0;i<SHMSZ;i++): R1 }( E$ k- D+ |' r8 i+ F
                *(s+i)='a';0 {6 u" o1 ]6 k, ]
        sleep(20);
2 X0 I+ }* n5 V9 P/ g- e}
  s4 K5 v8 m2 ~( e" T) z+ U# V$ E
- A7 C- T0 `4 Q- m2 K
7 D! e, y- H+ R1 m) g1 ?5 f//cli.c3 |# Y- q5 @+ p
#include <sys/types.h>' x0 `- o* p- H
#include <sys/ipc.h>+ S# \/ k* C* ^9 |: s6 j6 r, ^+ Y
#include <sys/shm.h>
2 j  z* w, G5 V% T2 k#include <stdio.h>
$ c$ @: d! N4 Y* t  L7 N8 S! i#define SHMSZ 2*1024*1024
; t8 S' O' }; K# P1 D7 A7 F( h3 L: Y) e4 N% L6 _0 @
int main(void)
2 a& A5 T1 _- q, ~) G( m+ ?{, g; G% g' w5 H! h$ }
        char c;
0 C5 C. B+ l  `' ?6 r$ i. n- C& j        int shmid;
, f. |% w' J* P4 a. t3 H2 u        key_t key;$ w6 {4 b7 d9 }6 j, S
        char* shm,*s;4 W5 N- i  r$ N; `: t
        unsigned int i;
/ ~# p, h+ b. M        + F2 @0 |# X5 m( {
        key=1234;
& H1 a/ X0 t8 X: ?$ w3 U4 C        shmid=shmget(key,SHMSZ,0666);
2 c9 w1 G' P/ L4 k" C+ }+ A2 G. R        shm=shmat(shmid,NULL,0);
+ _9 \. y8 U2 F; w& p( [        s=shm;2 m( R5 G5 d$ h
        for(i=SHMSZ-100;i<SHMSZ;i++)
& d2 b, \% a$ J9 q) g5 s7 u                printf("%c",s);
; a& ^; i% C$ \' I        printf("\nOK?\n");
/ H4 G$ T0 S* p2 ?% O        exit(0);
8 E) e( |1 u  W* s, \  a' [}% w# N  B: ~& x- [$ P

/ i% y+ s, T1 P& Z; U. H& l! {  p' d$ f) q$ ?

1 L  V6 k4 M4 D/ [& J2 j我灌,我灌,我乱灌.haha~~~~      

TOP

发新话题