gpt4 book ai didi

linux - 基于共享内存的程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:54 24 4
gpt4 key购买 nike

我正在为共享内存执行下面给出的代码,但是现在如果我必须从命令行给出字符串的数量和字符串模式,我应该做什么?接下来我还必须从共享内存区域读取字符串和字符串模式。

此外,如果我必须反转字符串并将其存储在同一位置,我该怎么办?

请帮我解决这个问题。

#define SHMSIZE 500/*我们给定的共享内存大小*/

int main(int argc, char *argv[])
{
int shmid;
key_t key;
char *shm;



key = 5876;

shmid = shmget(key,SHMSIZE,IPC_CREAT| 0666); /*Creating Shared Memory */

if(shmid < 0)
{
perror("shmget");
exit(1);
}

shm = shmat(shmid,NULL,0); /* Shared Memory Attachment */
if(shm == (char *) -1)
{
perror("shmat");
exit(1);
}

printf("Memory attached at %X\n",(int) shm); /* Printing the address where Memory is attached */

sprintf(shm,"God is Great"); /* Write a string to the shared memory */

shmdt(shm); /* Deattach the shared memory segment */

shm = shmat(shmid,(void *) 0x50000000,0); /*Reattach the shared memory segment */

printf("Memory Reattached at %X\n",(int) shm);

printf("%s\n",shm); /* Print the desired string */

return 0;

}

最佳答案

根据用户的输入,您需要解析通过argv传递的内容。然后将这些值复制到代码中并将其写入共享内存区域。从您的代码中,您可以执行以下操作:

 sprintf(shm, argv[1]);

解析传递到共享内存区域的第一个参数。要反转字符串,请将字符串从共享内存复制到变量中,然后反转它,最后从客户端代码将其写入该共享内存区域。因为,您已经创建了具有 666 权限的 shm,这应该允许客户端在该部分上写入。

如果您需要正确理解这个概念,请查看此处 ( http://www.cs.cf.ac.uk/Dave/C/node27.html )

关于linux - 基于共享内存的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183848/

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