gpt4 book ai didi

C:将带有字符串的结构复制到共享内存

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

<分区>

我在一个带有 fork 的服务器上工作,它在共享内存中存储一​​个字符串映射(k->v)。我想把它做得非常简单,但迷失在指针和我需要复制的内容中。所以我提取了如下所示的相关代码:

struct key_value {
char key[32];
char value[32];
};

struct key_value **map;
int *map_size;

int shmid = shmget(IPC_PRIVATE, sizeof(struct key_value**), 0600);
map = (struct key_value**) shmat(shmid, 0, 0);
int shmid_size = shmget(IPC_PRIVATE, sizeof(int), 0600);
map_size = (int*) shmat(shmid_size, 0, 0);
*map_size = 0;
//the above happens before fork()

char *c = "abc";

int shmid_struct = shmget(IPC_PRIVATE, sizeof(struct key_value*), 0600);
struct key_value *entry = (struct key_value*) shmat(shmid_struct, 0, 0);
*entry->key = *c;

printf("%s\n", map[0]->key);

//smhdt's & shmctl's

所以我想要的是将 *c 中的字符串 "abc" 复制到 map 中,从而进入共享内存。显然,我还没有完全理解指针和结构,所以我希望有人能把它弄清楚。我目前在“main 中的某处”遇到段错误(感谢 gdb...)。

请注意,我现在可以接受具有固定 max_size 的 map (如果是动态的会更好)。

编辑:有人在一个答案中指出,在结构中有一个 char* 很困难,所以改用 char[x] 。已更新代码以反射(reflect)这一点,但仍然无法正常工作。

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