|
RT,我是使用共享内存来作的
这是定义的一个结构体
struct chat_struct{
int sock_fd;
char user_id[20];
struct client_cmd{
int cmd_types;
char user_id[20];
}cmd;
char buffer[MAXLINE];
int slot_status;
};
创建共享内存
shmid=shmget(SHM_KEY,MAXUSERS*sizeof(struct chat_struct),0666|IPC_CREAT);
映射共享内存
shmp=(struct chat_struct *)shmat(shmid,NULL,0);
但是在映射后对shmp的操作比如
代码: [复制到剪贴板]
for(i=0;i<MAXUSERS;i++)
{
(shmp+i*chat_struct_len)->slot_status=OFF;
(shmp+i*chat_struct_len)->sock_fd=-1;
(shmp+i*chat_struct_len)->cmd.cmd_types=-1;
}
被报[1]+ 段错误 ,是不是不能这样用共享内存呢?那应该怎么实现多个子进程要共享一个结构体数组,还是这种情况下只能使用线程 |
|