Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Error writing and reading a structure from PIPE
- #include <stdio.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <sys/ipc.h>
- #include <sys/msg.h>
- #include <string.h>
- #include <sys/wait.h>
- #include <mqueue.h>
- #include <sys/stat.h>
- #include "Functions.h"
- #define MSGBUFFER_SIZE 50000
- pid_t serverPid;
- pid_t clientPid;
- typedef struct msgbuf {
- int messageLength;
- int messageType;
- char messageText[MSGBUFFER_SIZE];
- } Message_buf;
- int writePIPE(int fd, Message_buf *inputMessage){
- printf("n In write pipe message length :%d",inputMessage->messageLength);
- printf("n In write pipe message Data :%s",inputMessage->messageText);
- ssize_t n=write(fd,inputMessage,inputMessage->messageLength);
- printf("n Size :%d", n);
- return n;
- }
- ssize_t readPIPE(int fd, Message_buf *outputMessage)
- {
- ssize_t len;
- ssize_t n;
- if((n=read(fd,outputMessage,sizeof(outputMessage)))==0)
- {
- printf("n Error");
- return 0;
- }
- if((len=outputMessage->messageLength)>0)
- {
- printf("n Length ---->:%d",len);
- if((n=read(fd,outputMessage->messageText,strlen(outputMessage->messageText)))!=len)
- printf("n ERRRRROR expected %d got %d",len,n);
- }
- //printf("n In Read PIPE: %s",outputMessage->messageText);
- return len;
- }
- void Server(int readfd,int writefd)
- {
- Message_buf server_MessageBuf;
- ssize_t length;
- if((length=readPIPE(readfd,&server_MessageBuf))==0)
- {
- printf("n End of file while reading pathname");
- }
- //server_MessageBuf.messageText[length]='