在UNIX域套接字(AF_UNIX Type& DGRAM)中,当读取器缓慢时,no。排队的数据包是“ max_dgram_qlen ”。有没有办法识别占用排队(或)否的字节。发送方或接收方的队列中有更多字节空闲。 或者至少,当队列已满时,编写器被阻止。有没有办法识别编写器阻止事件? 提前谢谢。
答案 0 :(得分:1)
您应该将文件描述符设置为非阻塞,并使用select
确定是否可以在当前时间写入它。
答案 1 :(得分:0)
检查写缓冲区是否为空(假设您已将数据放入其中并想要检查它们是否已被使用):
ioctl(fd, SIOCOUTQ, &pending);
其中fd是套接字的文件描述符,等待变量,将返回剩余的数据大小。
要检查读缓冲区是否为空(假设有人已将数据放在那里,并且您想要检查它们是否存在而没有使用它们):
ioctl(fd, SIOCINQ, &pending);
/*note the difference on the second parameter, where we change the flag from SIOCOUTQ to SIOCINQ*/