C:如何对结构进行shmat?

时间:2013-01-08 15:40:09

标签: c unix gcc shared-memory

我有一个看起来像这样的结构:

struct data {
  int code;
  char name[25], fnum[8];
};

然后我尝试将它用作这样的共享内存:

int dataSID = shmget(100002, sizeof(struct data), IPC_CREAT | 0666);

并按照以下方式附上:

struct data *com = shmat(dataSID, 0, 0);

最后我尝试填写像这样的值:

(*com).code = 1;
scanf("%s", (*com).name);

我在scanf上获得了细分错误。

我做错了什么?

shmat是否为结构正确分配了内存?

1 个答案:

答案 0 :(得分:1)

对于字符数组,您始终可以使用 strcpy() strncpy()。其中建议使用strncpy(),这有助于避免缓冲区溢出。