求大神帮忙解答为什么把一个结构体指针赋值给结构体指针数组主函数会出现段错误(本人小白,急急!!)
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;
} 展开
#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;
} 展开
展开全部
child[0] = creat_child();//问题就在这里。段错误 —— 这个语句本身没有问题,可能问题出在creat_child函数体中:
Process *child;
child->pid = fork(); // 此时指针child没有指向任何对象(野指针),为其所指对象的成员赋值是不妥的。在这两个语句之间增加一个为child分配内存的语句试试,即:
Process *child;
child=(Process *)malloc(sizeof(Process));
child->pid = fork();
Process *child;
child->pid = fork(); // 此时指针child没有指向任何对象(野指针),为其所指对象的成员赋值是不妥的。在这两个语句之间增加一个为child分配内存的语句试试,即:
Process *child;
child=(Process *)malloc(sizeof(Process));
child->pid = fork();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询