求大神帮忙解答为什么把一个结构体指针赋值给结构体指针数组主函数会出现段错误(本人小白,急急!!)

include<stdio.h>#include<unistd.h>#include<stdlib.h>typedefstruct{pid_tpid;intfd[2];}... include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

typedef struct {
pid_t pid;
int fd[2];
} Process;
Process *creat_child(void)
{
Process *child;
child->pid = fork();
if(child->pid < 0){
perror("Error");
exit(1);
}
return child;
}
void father_do(Process *child, char *buf)
{
close(child->fd[0]);
write(child->fd[1], buf, sizeof(buf));
}
int child_do(Process *child, char *buf)
{
close(child->fd[1]);
int n = (child->fd[0], buf, 12);
return n;
}
int main(void)
{
Process *child[2];
child[0] = creat_child();//问题就在这里。段错误
return 0;
}
展开
 我来答
笃侠6A
推荐于2016-04-27 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3271万
展开全部
child[0] = creat_child();//问题就在这里。段错误 —— 这个语句本身没有问题,可能问题出在creat_child函数体中:
Process *child;
child->pid = fork(); // 此时指针child没有指向任何对象(野指针),为其所指对象的成员赋值是不妥的。在这两个语句之间增加一个为child分配内存的语句试试,即:
Process *child;
child=(Process *)malloc(sizeof(Process));
child->pid = fork();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式