1
我需要通過管道來傳遞這個結構:傳遞在C整體結構通過管道
typedef struct Student {
char * name;
char * average;
} Student;
typedef struct Connection {
int fd;
int dataSize;
void * data;
} Connection;
typedef struct Request {
int action;
Connection * connection;
} Request;
我的問題是,我不知道怎麼寫的學生結構以及如何讀取它。我可以正確讀取fd,action和dataSize,但我無法修復它的結構。我希望你能幫助我。也許有一種更簡單的方法來完成這個任務並傳遞整個請求結構。
所以我這樣做是在客戶端: (writeNamedPipe使用寫)
requestState writeRequest(Request * request, int fd) {
writeNamedPipe(fd, &request -> action, sizeof(int));
writeNamedPipe(fd, &request -> connection -> fd, sizeof(int));
writeNamedPipe(fd, &request -> connection -> dataSize, sizeof(int));
writeNamedPipe(fd, &request -> connection -> data, request -> connection -> dataSize);
return REQUEST_OK;
}
這在服務器端:
Request * getRequest(Connection * connection) {
Request *request;
int action, fd = 0;
int dataSize;
void * data;
read(connection-> fd, &action, sizeof(int));
read(connection-> fd, &fd, sizeof(int));
read(connection-> fd, &dataSize, sizeof(int));
data = malloc (dataSize);
read(connection-> fd, data, dataSize);
request = createRequest(action, fd, dataSize, data);
return request;
}