struct mymesg {
long mesg_len; /* #bytes in mesg_data, can be 0 */
long mesg_type; /* message type, must be > 0 */
char mesg_data[MAXMESGDATA];
};
ssize_t mesg_send(int, struct mymesg *);
ssize_t mesg_recv(int, struct mymesg *);
/*发送消息*/
ssize_t
mesg_send(int fd, struct mymesg *mptr)
{
return(write(fd, mptr, MESGHDRSIZE + mptr->mesg_len));
}
/*接收消息*/
ssize_t
mesg_recv(int fd, struct mymesg *mptr)
{
size_t len;
ssize_t n;
/* 4read message header first, to get len of data that follows */
if ( (n = Read(fd, mptr, MESGHDRSIZE)) == 0)
return(0); /* end of file */
else if (n != MESGHDRSIZE)
err_quit("message header: expected %d, got %d", MESGHDRSIZE, n);
if ( (len = mptr->mesg_len) > 0)
if ( (n = Read(fd, mptr->mesg_data, len)) != len)
err_quit("message data: expected %d, got %d", len, n);
return(len);
}
文章标题
最新推荐文章于 2023-10-19 15:03:50 发布