修改没有memset的双指针

时间:2014-04-10 01:33:54

标签: c semaphore

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,它将允许进程访问当前的内存区域被信号量锁定。)

1 个答案:

答案 0 :(得分:1)

C信任您只做安全事情。没有办法让编译器强制执行类似“只有拥有该信号量才能访问此块”。

您记录了所有要求(在源中),然后您手动遵循合同。

您使用哪些功能并不重要。

相关问题