Output line-buffered or packet-buffered
“-l
“ option is used to specify output line-buffered. On Unix-like
Operating Systems, setvbuf()
or setlinebuf()
will be used (code is here):
......
case 'l':
#ifdef _WIN32
/*
* _IOLBF is the same as _IOFBF in Microsoft's C
* libraries; the only alternative they offer
* is _IONBF.
*
* XXX - this should really be checking for MSVC++,
* not _WIN32, if, for example, MinGW has its own
* C library that is more UNIX-compatible.
*/
setvbuf(stdout, NULL, _IONBF, 0);
#else /* _WIN32 */
#ifdef HAVE_SETLINEBUF
setlinebuf(stdout);
#else
setvbuf(stdout, NULL, _IOLBF, 0);
#endif
#endif /* _WIN32 */
break;
......
tcpdump
can also output packet-buffered through “-U/--packet-buffered
“ option and call pcap_dump_flush API.