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

alarmを使用して、指定した秒数後にシグナルを生成できます。

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