只是一个简单的问题,我正在做一个原始套接字编程:

fd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);

并使用以下方法拉出发送缓冲区:

bytes = sendto(fd, &buffer, send_size, 0,(struct sockaddr*)&socket_addr, addr_size);

ioctl(fd, TIOCOUTQ, &bytes);
while(bytes>0)
    ioctl(fd, TIOCOUTQ, &bytes);

如果字节返回0并退出while循环,它是否保证数据是从设备发出的?如果不是,我如何实际检查数据是否从设备发出?