C中的共享内存 - 共享字符串

时间:2014-05-02 11:37:59

标签: c string memory shared

有人能告诉我在使用共享内存的进程之间在C中共享字符串的另一种方法吗?我只是用fors来实现这种伪劣方式。我想使用像strcpy或similars这样的东西。使用int非常简单,但是当指针开始播放时,因为我很难实现。以下是我为寻找其他方式而采取的方式:

int memid,*nptr,i;
char mezua[50];
struct shmid_ds buff;


if ((memid=shmget(IPC_PRIVATE,sizeof(mezua),0600|IPC_CREAT))<0){
    perror("shmget error");
    exit(-1);
}
printf("%d\n",memid);

if((nptr=(char*)shmat(memid,0,0))==(char*)-1){
    perror("shmat error");
    exit(-1);
}

printf("Sartu nahi duzun mezua:\n");
__fpurge(stdin);
scanf("%s",mezua);


for(i=0;i<strlen(mezua);i++){
    *(nptr+i)=mezua[i];
}  
//**HERE WOULD GO THE OTHER WAY TO COPY STRINGS INTO SHARED MEMORY**


for(i=0;*(nptr+i)!='\0';i++)
    printf("%c",*(nptr+i)); 
//**HERE WOULD GO THE OTHER WAY TO READ STRINGS FROM SHARED MEMORY**


if(shmdt(nptr)<0){
    perror("shmdt error");
    exit(-1);
    }

    if(shmctl(memid,IPC_RMID,&buff)==-1){
        perror("shmctl error");
        exit(-1);
    }

非常感谢!

有一个很好的代码!!

1 个答案:

答案 0 :(得分:0)

您可能希望阅读man strcpy

nptr设为char*并执行

strcpy(nptr, mezua); /* Copies from mezuato SHM. */

....

strcpy(mezua, nptr); /* Copies form SHM to mezua. */