svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
pcap_breakloop(3pcap)
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(3PCAP) or
pcap_loop(3PCAP) to return rather than looping; they will return the
number of packets that have been processed so far, or PCAP_ERROR_BREAK
if no packets have been processed so far.
This routine is safe to use inside a signal handler on UNIX or a con‐
sole 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_breakloop(), the call will be restarted, and
the loop will not terminate until more packets arrive and the call com‐
pletes.
Note also that, in a multi-threaded application, if one thread is
blocked in pcap_dispatch(), pcap_loop(), pcap_next(3PCAP), or
pcap_next_ex(3PCAP), 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 or thread signalling in
systems that support POSIX threads, or SetEvent() on the result of
pcap_getevent() on a pcap_t on which the thread is blocked on Windows.
Asynchronous procedure calls will not work on Windows, as a thread
blocked on a pcap_t will not be in an alertable state.
Note that pcap_next() and pcap_next_ex() will, on some platforms, loop
reading packets from the OS; that loop will not necessarily be termi‐
nated by a signal, so pcap_breakloop() should be used to terminate
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 PCAP_ERROR_BREAK 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 subse‐
quent call will return PCAP_ERROR_BREAK and clear the flag.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
box; cbp-1 | cbp-1 l | l . ATTRIBUTE TYPE ATTRIBUTE VALUE = Availabil‐
ity system/library/libpcap = Stability Uncommitted
SEE ALSO
pcap(3PCAP)
NOTES
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
This software was built from source available at
https://github.com/oracle/solaris-userland. The original community
source was downloaded from https://www.tcpdump.org/release/libp‐
cap-1.9.1.tar.gz.
Further information about this software can be found on the open source
community website at https://www.tcpdump.org/.
25 July 2018 PCAP_BREAKLOOP(3pcap)