char **ARRAY;
char people[4][20];
shmid = shmget (shmkey, sizeof (people), 0644 | IPC_CREAT);
ARRAY = (char**) shmat (shmid, NULL, 0);
memcpy(ARRAY, "BOBBY1", sizeof("BOBBY1"));
memcpy(ARRAY + 20, "BOBBY2", sizeof("BOBBY2"));
memcpy(ARRAY + 2*20, "BOBBY3", sizeof("BOBBY3"));
memcpy(ARRAY + 3*20, "BOBBY4", sizeof("BOBBY4"));
所以我想知道如何在不使用memcpy的情况下修改此数组中的现有字符串?
原因是** ARRAY是进程之间的共享内存,我想使用信号量来控制访问(如果我正确理解memcpy,它将允许进程访问当前的内存区域被信号量锁定。)
答案 0 :(得分:1)
C信任您只做安全事情。没有办法让编译器强制执行类似“只有拥有该信号量才能访问此块”。
您记录了所有要求(在源中),然后您手动遵循合同。
您使用哪些功能并不重要。