如何使用pcap_breakloop?

时间:2010-03-04 06:34:20

标签: c pcap

我在另一个函数中有一个pcap_loop函数,用于捕获数据包 直到用户停止它,即

void functionA()
{
   signal(SIGINT, terminate_process); 
   pcap_loop(handle, -1, callback, NULL);
   ...

}

void terminate_process(int signum)
{
   pcap_breakloop(handle);
   pcap_close(handle);
} 

是否可以设置捕获数据包的持续时间?类似的东西:

if (time(NULL) - start_time > 100)
   pcap_breakloop(handle);

但是我不知道在哪里放这个,因为到目前为止我见过的所有例子都在信号处理程序中使用pcap_breakloop,这需要用户干预。如何在pcap_loop运行时检查时间条件?

谢谢。

此致 雷恩

1 个答案:

答案 0 :(得分:3)

您可以使用alarm在给定的秒数后生成信号:

void functionA()
{
    signal(SIGALRM, terminate_process); 
    alarm(100);
}