4

我在另一个函数中有一个 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 运行时如何检查时间条件?

谢谢你。

问候,雷恩

4

1 回答 1

4

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

void functionA()
{
    signal(SIGALRM, terminate_process); 
    alarm(100);
}
于 2010-03-04T06:38:06.280 回答