实现一个Pipe类可以通过管道(pipe)来传输结构体(struct)。首先,需要定义一个结构体,并将其写入管道,然后从管道中读取。具体实现代码如下:
#include
#include
#include
#include
#include
#include
struct Person {
char name[50];
int age;
char gender[10];
};
class Pipe {
private:
int fd[2]; //fd[0] for reading, fd[1] for writing
public:
Pipe() {
if (pipe(fd) == -1) {
perror("pipe");
}
}
void write_struct(Person p) {
int size = sizeof(Person);
write(fd[1], &p, size);
}
Person read_struct() {
Person p;
int size = sizeof(Person);
read(fd[0], &p, size);
return p;
}
};
int main() {
Pipe p;
Person person;
strcpy(person.name, "Tom");
person.age = 20;
strcpy(person.gender, "male");
p.write_struct(person);
Person read_person = p.read_struct();
printf("Name: %s\nAge: %d\nGender: %s\n", read_person.name, read_person.age, read_person.gender);
return 0;
}
以上代码实现了通过Pipe类传输结构体的功能。需要注意的是,管道是单向的,因此在对象中需要维护读写两个端口,以便正确读写信息。同时,在读写结构体时,需要保证大小正确,以免发生错误。