NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |SEE ALSO |COLOPHON | |
PCAP_SETNONBLOCK(3PCAP)PCAP_SETNONBLOCK(3PCAP)pcap_setnonblock, pcap_getnonblock - set or get the state of non- blocking mode on a capture device
#include <pcap/pcap.h>char errbuf[PCAP_ERRBUF_SIZE];int pcap_setnonblock(pcap_t *p, int nonblock, char *errbuf);int pcap_getnonblock(pcap_t *p, char *errbuf);
pcap_setnonblock() puts a capture handle into ``non-blocking'' mode, or takes it out of ``non-blocking'' mode, depending on whether thenonblock argument is non-zero or zero. It has no effect on ``savefiles''.errbuf is a buffer large enough to hold at leastPCAP_ERRBUF_SIZEchars. In ``non-blocking'' mode, an attempt to read from the capture descriptor withpcap_dispatch(3PCAP) andpcap_next_ex(3PCAP) will, if no packets are currently available to be read, return0 immediately rather than blocking waiting for packets to arrive.pcap_loop(3PCAP) will loop forever, consuming CPU time when no packets are currently available;pcap_dispatch() should be used instead.pcap_next(3PCAP) will returnNULLif there are no packets currently available to read; this is indistinguishable from an error, sopcap_next_ex() should be used instead. When first activated withpcap_activate(3PCAP) or opened withpcap_open_live(3PCAP), a capture handle is not in ``non-blocking mode''; a call topcap_setnonblock() is required in order to put it into ``non-blocking'' mode.
pcap_setnonblock()return 0 on success,PCAP_ERROR_NOT_ACTIVATED if called on a capture handle that has been created but not activated, andPCAP_ERRORfor other errors.pcap_getnonblock() returns the current ``non-blocking'' state of the capture descriptor on success; it always returns0on ``savefiles''. It returnsPCAP_ERROR_NOT_ACTIVATEDif called on a capture handle that has been created but not activated, andPCAP_ERRORfor other errors. IfPCAP_ERRORis returned,errbuf is filled in with an appropriate error message.
pcap(3PCAP),pcap_next_ex(3PCAP),pcap_geterr(3PCAP)
This page is part of thelibpcap (packet capture library) project. Information about the project can be found at ⟨http://www.tcpdump.org/⟩. If you have a bug report for this manual page, see ⟨http://www.tcpdump.org/#patches⟩. This page was obtained from the project's upstream Git repository ⟨https://github.com/the-tcpdump-group/libpcap.git⟩ on 2025-08-11. (At that time, the date of the most recent commit that was found in the repository was 2025-08-10.) If you discover any rendering problems in this HTML version of the page, or you believe there is a better or more up-to-date source for the page, or you have corrections or improvements to the information in this COLOPHON (which isnot part of the original manual page), send a mail to man-pages@man7.org 30 November 2023PCAP_SETNONBLOCK(3PCAP)HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface. For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere. Hosting byjambit GmbH. | ![]() |