【发布时间】:2020-12-30 18:32:05
【问题描述】:
我正在使用 C 套接字发送设置了 MSG_DONTWAIT 标志的 ICMP 数据包。 我的程序是单线程的,但它希望以高频率发送消息,所以我将消息发送设置为非阻塞。 每次调用后共享/修改/重用消息缓冲区是否安全? (除非返回 EAGAIN 或 EWOULDBLOCK)。
msg_control(辅助数据)被重用,msg_control->struct in_pktinfo->ipi_ifindex(出站接口ifindex)在调用之间被修改。
iov.iov_base 缓冲区内容(不是指针!)和 iov.iov_len 也可以在调用之间更改。 (不太可能,但仍有可能)。
是否可以在非阻塞模式下高频更改calsl之间的ifinex和iov_base内容? (除非我回来 EAGAIN 或 EWOULDBLOCK)
谢谢!
【问题讨论】: