我有一个 C 程序,它使用for(;;)
循环和select()
从/向socket发送操作以监视文件描述符。我还需要这个程序每80毫秒发送一个数据包到一个数据包,我该如何实现呢?
也许我可以使用fork()
并且子进程只需在{80}每隔80毫秒监视一个文件描述符中写一个ack。
有更好的解决方案吗?
答案 0 :(得分:3)
调用select()时,可以使用timeout参数来限制选择等待时间。
struct timeval {
long tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
将超时限制为80毫秒并发送所需的数据包非常容易。