• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 請教一個共享內存問題

    發表于:2007-05-25來源:作者:點擊數: 標簽:代碼問題請教共享內存
    代碼: #include stdio.h#include sys/types.h#include errno.h#include sys/shm.h#include sys/ipc.h#include string.h#include sys/sem.h#include unistd.h#define K 1024#define SHMSIZE K*4*16#define SHMFLAGS IPC_CREAT|0644struct mystruct{ int user_
     
    代碼:

    #include "stdio.h" #include "sys/types.h" #include "errno.h" #include "sys/shm.h" #include "sys/ipc.h" #include "string.h" #include "sys/sem.h" #include "unistd.h" #define K 1024 #define SHMSIZE K*4*16 #define SHMFLAGS IPC_CREAT|0644 struct mystruct{ int user_name; struct mystruct * next; }; typedef struct mystruct * MYSTRUCT; int shmid; cleanup(){ shmctl(shmid,IPC_RMID,0); exit(0); } main(){ char * addr1; int i; pid_t pid; MYSTRUCT user_struct; MYSTRUCT p,q,r; for(i=0;i<20;i++) signal(i,cleanup); shmid = shmget(IPC_PRIVATE,SHMSIZE,SHMFLAGS); if(shmid == -1){ printf("shm create failed!\n"); }else{ printf("shared memory segment ID = %d\n",shmid); addr1 = shmat(shmid,0,0); if((pid=fork())==0){ user_struct = (MYSTRUCT)addr1; r = user_struct; i=0; while(i<100){ /* q=(MYSTRUCT)malloc(sizeof(struct mystruct)); */ q=user_struct++; q->user_name = i; q->next=NULL; r->next=q; r=r->next; i++; /* sleep(1); */ /* 此處如果不加sleep(1),則一切正常,如果加上sleep(1), 那么僅僅打印鏈表的第一二個節點的地址,等很久以后, 可能會打印以后節點的地址,是不是由于進程不同步的問題? */ } } if((pid=fork())==0){ while(1){ p= (MYSTRUCT)addr1; i=0; while(p!=NULL){ printf("0x%x\n",p); p=p->next;

    i++;
          }
          sleep(2);
       }
       }
       shmdt(addr1);
    
       shmctl(shmid,IPC_RMID,0);
      }   
    
    } 

     fork()兩次做什么,是不是寫錯了?

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>