gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:34:16 25 4
gpt4 key购买 nike

谁能告诉我另一种使用共享内存在进程之间共享 C 字符串的方法吗?我只是用fors实现了这种粗制滥造的方式。我想使用 strcpy 或类似的东西。使用 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);
}

非常感谢!

有一个好的代码!!

最佳答案

您可能想阅读man strcpy

nptr 设为 char* 并执行

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

....

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

关于c - C 中的共享内存 - 共享字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com