问题描述
我正在尝试在共享内存中创建基于指针的队列
这是我的入队功能
void enqueue(queue *q,int k) {
_queueNode *temp = mmap(NULL,sizeof(_queueNode),PROT_READ | PROT_WRITE,MAP_SHARED | MAP_ANONYMOUS,-1,0);
temp->key = k;
temp->next = NULL;
if (q->rear == NULL) {
q->front = q->rear = temp;
}
else {
q->rear->next = temp;
q->rear = temp;
}
q->length++;
}
_queueNode结构
typedef struct queueNode {
int key;
struct queueNode *next;
} _queueNode;
入队在父进程中一切正常,但是当我入队在子进程中时只能对它起作用,并且当我在父进程中读取更改时遇到分段错误。 我的主要是这样
queue *q = newqueue();
enqueue(q,1);
enqueue(q,2);
enqueue(q,3);
if (fork() == 0) {
enqueue(q,4);
printf("child: ");
}
else {
wait(NULL);
printf("parent: ");
}
printqueue(q);
我正在得到这个输出
child: [4,3,2,1]
Segmentation fault (core dumped)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)