`

做过libpcap开发的兄弟进,总要等到最后一个包到达了才能退出

阅读更多
遇到这样一个情况
用pcap_loop进行循环抓包
loop_break退出时,总要等到最后一个包到达了才能退出。

应该不是程序库的问题,tcpdump都是好好的。

是不是我用法用错了?

好不容易再国外搜到一个类似的问题,但是作者却联系不到了。

后来BUG找到原来是return 0和exit 0区别

在CSDN发的讨论帖
http://topic.csdn.net/u/20080520/16/7244d981-12b3-42db-a3f1-208f6cc3ffe0.html


自己总结了下
首先从语意上来讲,return表示一个函数的调用返回,比如你可以在一函数体里一般就返回,其主旨是告诉主函数一些相关的信息。
从具体的作用来讲,当一个函数返回或者退出时,都不可避免的做一些清理工作。比如exit被调用的时候,会销毁所有static对象,清空所有缓冲区,关闭所有i/o通道,而return也会做类似的操作,但是可能一些i/o通道就无法关闭和释放。

再对语意进行一点补充,return 0这个标准是从C++出现时才有的,主要是会进行栈上对象数据析构函数的调用,而exit则没有。
1
1
分享到:
评论

相关推荐

    基于Libpcap实现的局域网嗅探抓包发包解析工具_嗅探抓包发包解析工具_

    基于Libpcap实现的局域;网嗅探抓包发包解析工具.

    linux下的libpcap抓包分析程序

    在Linux操作系统中,libpcap库是一个强大的网络数据包捕获框架,用于开发网络监控工具。这个库提供了底层访问网络接口的能力,使得开发者能够编写出能够捕获、解析和处理网络流量的程序。标题提到的“linux下的...

    libpcap抓包原理[参考].pdf

    当一个数据包到达网络接口时,libpcap 首先利用已经创建的 Socket 从链路层驱动程序中获得该数据包的拷贝,再通过 Tap 函数将数据包发给 BPF 过滤器。BPF 过滤器根据用户已经定义好的过滤规则对数据包进行逐一匹配,...

    基于libpcap网卡抓包

    libpcap是一个强大的开源库,主要用于在网络层进行数据包捕获。这个库被广泛应用于网络监控、数据分析、安全检测等多个领域。libpcap提供了对底层网络接口的访问,使得开发者可以编写程序来实时地捕获通过网卡的...

    libpcap+抓包解析示例

    由于系统限制,包最大每次抓包最大长度为1518字节,建议自定义的基于udp的通信协议包不要超过1450字节,这样的话,通过udp传输数据,就不会分片,可以用libpcap直接抓包,不用后期组包处理数据。libpcap个人认为主要...

    libpcap-MT多线程抓包处理包

    "libpcap-MT多线程抓包处理包" 指的是一个利用libpcap库,并采用多线程技术来实现同时抓取和处理网络数据包的程序。这里的“MT”代表多线程(Multi-Threaded),意味着程序使用了并发处理以提高性能。 **描述详解:...

    libpcap网络抓包入门.rar

    libpcap是一个强大的开源库,主要用于在网络层进行数据包捕获。它被广泛应用于网络监控、分析、故障排查以及安全工具开发等领域。本教程将带你走进libpcap的世界,了解如何利用这一工具进行网络抓包。 一、libpcap...

    linux-get-net-packet-libpcap.rar_libpcap_libpcap抓包

    libpcap库由随同tcpdump工具一起开发的团队创建,其设计目标是提供一个统一的接口,使得开发者可以跨平台地捕获网络数据包。libpcap的核心功能包括: 1. **数据包捕获**:libpcap允许程序员打开一个网络接口,并...

    libpcap源码

    libpcap-1.5.2是该库的一个版本,包含了源代码,允许开发人员深入理解其工作原理并进行定制化开发。 libpcap的核心功能是提供一种机制来捕获网络接口上的数据包,而无需深入操作系统内核。它的设计目标是简单易用,...

    AndroidStudio 3.1 使用libpcap示例

    在Android开发环境中,Android Studio 3.1是一个重要的版本,它提供了丰富的功能和优化,使得开发者可以更加高效地构建应用程序。在这个场景中,我们将探讨如何在Android Studio 3.1中利用libpcap库来实现网络数据包...

    Libpcap+QT

    本篇文章将深入探讨如何结合两者,利用Libpcap的强大网络嗅探功能与QT的易用界面,构建一个功能丰富的网络嗅探器。 Libpcap是一个在多种操作系统上广泛使用的开源库,它的主要功能是捕获网络数据包。它提供了低级别...

    libpcap 抓包 实现网址的显示 有注释

    libpcap是一个开源库,广泛应用于各种操作系统,如Linux、Windows和macOS,为开发者提供了一个强大的抓包和分析工具。本篇将详细介绍如何使用libpcap库来实现网址的显示,并对http协议进行解析。 1. **libpcap库...

    libpcap-1.1.1.tar

    总的来说,libpcap是一个强大的数据包捕获库,它在Linux系统中扮演着至关重要的角色。理解和熟练使用libpcap不仅可以提升网络监控和分析的能力,也是提升程序员在网络编程领域专业素养的重要一步。而掌握tar命令则是...

    libpcap的使用示例

    标题"libpcap的使用示例"指出我们将探讨的是一个关于libpcap库的实际应用。libpcap是一个广泛使用的开源库,主要用于在各种操作系统上捕获网络数据包,包括Linux。它提供了低级别的接口,使得开发者能够高效地分析...

    libpcap交叉编译

    libpcap是一种流行的网络嗅探器库,它提供了一个跨平台的接口来捕获和分析网络流量。下面是关于libpcap交叉编译的知识点: 交叉编译环境配置 在开始编译libpcap之前,需要首先配置交叉编译环境。这包括安装必要的...

    libpcap+libpcap-devel

    libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm

    Linux下实现libpcap抓包并保存在文件里的示例程序及参考文档

    在Linux操作系统中,libpcap库是一个强大的网络数据包捕获库,被广泛用于开发网络监控和分析工具,如tcpdump。本示例程序及参考资料将帮助你理解如何使用libpcap来抓取网络流量,并将捕获的数据保存到文件中。 首先...

    libpcap-1.10.1.tar.gz

    libpcap 是一个强大的开源库,主要用于网络数据包捕获。在Linux系统中,它为开发者提供了一种高效、方便的方式来访问底层网络接口,实现对网络流量的实时监控和分析。libpcap是许多网络安全工具,如tcpdump和...

    libpcap数据获取

    这个强大的开源库为开发者提供了一种高效的方式,以原始套接字(raw sockets)访问网络接口,从而实现对传输层数据包的实时捕获和分析。在Linux系统中,libpcap与内核级别的网络接口紧密协作,确保了数据获取的高效...

    libpcap离线脚本自动安装(含全部依赖gcc,m4,bison,flex,libpcap)

    libpcap(Packet Capture Library)即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库; libpcap可以实现以下功能: - 数据包捕获:捕获流经网卡的原始数据包 - 自定义数据包发送:任何构造格式的原始...

Global site tag (gtag.js) - Google Analytics