0
任何人都可以告诉我另一种方法来在使用共享内存的进程之间共享C中的字符串吗?我只使用fors实现了这种低劣的方式。我想使用像strcpy或类似的东西。使用int非常简单,但是当指针开始播放变得如此难以形成我时。下面是我为了寻找其他方式achived方式:C中的共享内存 - 共享字符串
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);
}
非常感谢!
有一个很好的代码!
'为(I = 0; I
Grapsus
什么你的意思是“共享字符串”吗?更好的阐述。 – Deduplicator
将'int * nptr'更改为'char * nptr'。根据你的逻辑,'nptr'应该是字符指针。 – Rohan