如何使用管道传送结构体?

来源:百度知道 编辑:UC知道 时间:2024/06/07 06:08:59
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
char no[10];
char name[10];
char sex[10];
char email[30];
char tel[10];
};
void insert(int i,struct student *s)
{
printf ("input student%d's message:\n",i);
printf ("no:");
gets(s->no);
printf ("name:");
gets(s->name);
printf ("sex:");
gets(s->sex);
printf ("email:");
gets(s->email);
printf ("tel:");
gets(s->tel);
}
main()
{
int id1,id2,fd[2],length;
length=sizeof(struct student);
struct student stu1,stu2;
char buf[100],s1[100],s2[100];
pipe(fd);
insert(1,&stu1);
insert(2,&stu2);
while ((id1=fork())==-1);
if (id1==0)
{
printf("Student1 is sending message!\n");
write(fd[1],&stu1,length);
exit(0);
}

pipe传输时,数据是字节流,相当于char [] ;
所以用s1 [100] 接收就可以。
显式的类型转换应该是:
write(fd[1],(void *)&stu1,length);

。。。
read(fd[0],(void *)s1,length);

可以定义一个Student * ps ;
ps = (Stuant *) s1 ;
然后 insert (1, ps) ;

就能理解了吧

多给点分,会有人出来回答你的。

C语言