|
|
Эта страница руководства является частью версии 5.0 Инструментов XCodeПолучить эти инструменты:
Если Вы выполняете версию Инструментов XCode кроме 5,0, просматриваете документацию локально:
Читать страницы руководстваСтраницы руководства предназначаются как справочник для людей, уже понимающих технологию.
|
PCAP_BREAKLOOP(3PCAP) PCAP_BREAKLOOP(3PCAP)
NAME
pcap_breakloop - force a pcap_dispatch() or pcap_loop() call to return
SYNOPSIS
#include <pcap/pcap.h>
void pcap_breakloop(pcap_t *);
DESCRIPTION
pcap_breakloop() sets a flag that will force pcap_dispatch() or pcap_loop() to return rather than
looping; they will return the number of packets that have been processed so far, or -2 if no packets
have been processed so far.
This routine is safe to use inside a signal handler on UNIX or a console control handler on Windows,
as it merely sets a flag that is checked within the loop.
The flag is checked in loops reading packets from the OS - a signal by itself will not necessarily
terminate those loops - as well as in loops processing a set of packets returned by the OS. Note
that if you are catching signals on UNIX systems that support restarting system calls after a signal,
and calling pcap_breakloop() in the signal handler, you must specify, when catching those signals,
that system calls should NOT be restarted by that signal. Otherwise, if the signal interrupted a
call reading packets in a live capture, when your signal handler returns after calling pcap_break-loop(), pcap_breakloop(),
loop(), the call will be restarted, and the loop will not terminate until more packets arrive and the
call completes.
Note also that, in a multi-threaded application, if one thread is blocked in pcap_dispatch(),
pcap_loop(), pcap_next(), or pcap_next_ex(), a call to pcap_breakloop() in a different thread will
not unblock that thread; you will need to use whatever mechanism the OS provides for breaking a
thread out of blocking calls in order to unblock the thread, such as thread cancellation in systems
that support POSIX threads.
Note that pcap_next() and pcap_next_ex() will, on some platforms, loop reading packets from the OS;
that loop will not necessarily be terminated by a signal, so pcap_breakloop() should be used to ter-minate terminate
minate packet processing even if pcap_next() or pcap_next_ex() is being used.
pcap_breakloop() does not guarantee that no further packets will be processed by pcap_dispatch() or
pcap_loop() after it is called; at most one more packet might be processed.
If -2 is returned from pcap_dispatch() or pcap_loop(), the flag is cleared, so a subsequent call will
resume reading packets. If a positive number is returned, the flag is not cleared, so a subsequent
call will return -2 and clear the flag.
SEE ALSO
pcap(3PCAP), pcap_loop(3PCAP), pcap_next_ex(3PCAP)
5 April 2008 PCAP_BREAKLOOP(3PCAP)
|
Сообщение о проблемах
Способ сообщить о проблеме с этой страницей руководства зависит от типа проблемы:
- Ошибки содержания
- Ошибки отчета в содержании этой документации со ссылками на отзыв ниже.
- Отчеты об ошибках
- Сообщите об ошибках в функциональности описанного инструмента или API через Генератор отчетов Ошибки.
- Форматирование проблем
- Отчет, форматирующий ошибки в интерактивной версии этих страниц со ссылками на отзыв ниже.