C++ 在C+;中实现管道缓冲读取的最佳方法是什么+;?
我正在监测C++ 在C+;中实现管道缓冲读取的最佳方法是什么+;?,c++,linux,select,pipe,buffer,C++,Linux,Select,Pipe,Buffer,我正在监测选择循环中管道的读取端,并在数据可用时使用读取从中读取数据。我总是希望通过管道获得某种数据格式,该管道的类型为struct packet\u t。当select调用发出信号时,我的初始代码对文件描述符执行了以下操作: int read_packet(int fd) { struct packet_t pkt; int read_bytes = read(fd, &pkt, sizeof(pkt)); if (bytes_read <= 0)
选择循环中管道的读取端,并在数据可用时使用读取从中读取数据。我总是希望通过管道获得某种数据格式,该管道的类型为struct packet\u t
。当select
调用发出信号时,我的初始代码对文件描述符执行了以下操作:
int
read_packet(int fd)
{
struct packet_t pkt;
int read_bytes = read(fd, &pkt, sizeof(pkt));
if (bytes_read <= 0)
{
/* handle some sort of error */
return -E_SOCK;
}
else if (bytes_read < sizeof(pkt))
{
/* return bad message format */
return -E_BADMSG;
}
/* do something with the packet */
return E_OK;
}
int
读取数据包(int fd)
{
结构数据包;
int read_bytes=read(fd,&pkt,sizeof(pkt));
如果(字节)被读取