C++ 是否有网络接口错误数据的接口

C++ 是否有网络接口错误数据的接口,c++,linux,networking,concurrency,network-programming,C++,Linux,Networking,Concurrency,Network Programming,我正试图找到一个接口来跟踪错误linux网络数据,例如使用ifconfig或ethtool显示的错误/丢弃/溢出/帧错误。 我一直在浏览/usr/include,试图找到一些运气不佳的东西 我意识到这可能只是一个布尔标志,而不是一个计数器,这很好,因为我只是试图跟踪一段时间内的溢出 此信息是否存在系统调用或全局变量 更新 正如我所建议的那样,我查看了strace的输出,正如我所建议和怀疑的那样,大多数信息似乎都是通过ioctl库来的,但是错误数据似乎来自一个我不知道的平面/proc文件“/pro

我正试图找到一个接口来跟踪错误linux网络数据,例如使用ifconfig或ethtool显示的错误/丢弃/溢出/帧错误。 我一直在浏览/usr/include,试图找到一些运气不佳的东西

我意识到这可能只是一个布尔标志,而不是一个计数器,这很好,因为我只是试图跟踪一段时间内的溢出

此信息是否存在系统调用或全局变量

更新 正如我所建议的那样,我查看了strace的输出,正如我所建议和怀疑的那样,大多数信息似乎都是通过ioctl库来的,但是错误数据似乎来自一个我不知道的平面/proc文件“/proc/net/dev”

这就产生了几个问题:

  • 如果我所需要的唯一信息就在那个文件中,我还需要处理套接字吗

  • 我能以多快的速度查询这些信息而不会对系统造成损害?我希望有与溢出相关的时间戳,我希望以5s的间隔进行监控,但当值开始增加时,会上升到0.5s或更小

  • 我尝试使用read()/write()/mmap()和strace中提到的其他命令捕获缓冲区,但在执行时遇到了一些困难。如果我只是使用fstream,这会不会导致阻塞/线程问题

    dmf86@tux5:/$ strace ifconfig eth0
    
    execve(“/sbin/ifconfig”、[“ifconfig”、“eth0”]、0x7ffc92588278/*24变量*/)=0 brk(空)=0x565327409000 access(“/etc/ld.so.nohwcap”,F_OK)=-1 enoint(没有这样的文件或目录) access(“/etc/ld.so.preload”,R\u OK)=-1 enoint(没有这样的文件或目录) openat(AT_FDCWD,“/etc/ld.so.cache”,O_RDONLY | O_CLOEXEC)=3 fstat(3,{st_mode=S_IFREG | 0644,st_size=227061,…})=0 mmap(NULL,227061,PROT_READ,MAP_PRIVATE,3,0)=0x7f2f042af000 关闭(3)=0 access(“/etc/ld.so.nohwcap”,F_OK)=-1 enoint(没有这样的文件或目录) openat(AT_FDCWD,“/lib/x86_64-linux-gnu/libc.so.6”,O_RDONLY | O_CLOEXEC)=3 读(3),“\177ELF\2\1\1\3\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\260\34\2\0\0\0\0\0\0”…,832)=832 fstat(3,{st_mode=S_IFREG | 0755,st_size=2030544,…})=0 mmap(NULL,8192,PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS,-1,0)=0x7f2f04ad000 mmap(NULL,4131552,PROT_READ | PROT_EXEC,MAP_PRIVATE | MAP_DENYWRITE,3,0)=0x7f2f03ccf000 mprotect(0x7f2f03eb6000、2097152、PROT_NONE)=0 mmap(0x7f2f040b6000,24576,PROT|u READ | PROT|u WRITE,MAP|PRIVATE | MAP|u FIXED | MAP|u DENYWRITE,3,0x1e7000)=0x7f2f040b6000 mmap(0x7f2f040bc000,15072,保护读写,映射私有,映射固定,映射匿名,-1,0)=0x7f2f040bc000 关闭(3)=0 arch_prctl(arch_SET_FS,0x7f2f042ae540)=0 mprotect(0x7f2f040b6000、16384、PROT_READ)=0 mprotect(0x565326990004096,保护读取)=0 mprotect(0x7f2f042e7000、4096,保护读取)=0 munmap(0x7f2f042af000,227061)=0 brk(空)=0x565327409000 brk(0x56532742a000)=0x56532742a000 openat(AT_FDCWD,“/usr/lib/locale/locale archive”,O_RDONLY | O_CLOEXEC)=3 fstat(3,{st_mode=S_IFREG | 0644,st_size=3004464,…})=0 mmap(NULL,3004464,PROT_READ,MAP_PRIVATE,3,0)=0x7f2f039f1000 关闭(3)=0 uname({sysname=“Linux”,nodename=“tux5”,…})=0 访问(“/proc/net”,R_OK)=0 访问(“/proc/net/unix”,R_OK)=0 套接字(AF_UNIX,SOCK_DGRAM,0)=3 插座(天线、插座、IP协议)=4 访问(“/proc/net/if_inet6”,R_OK)=0 插座(AF INE6,插座,IP协议)=5 access(“/proc/net/ax25”,R\u OK)=-1 enoint(没有这样的文件或目录) access(“/proc/net/nr”,R\u OK)=-1 enoint(没有这样的文件或目录) access(“/proc/net/rose”,R\u OK)=-1 enoint(没有这样的文件或目录) access(“/proc/net/ipx”,R_OK)=-1 enoint(没有这样的文件或目录) access(“/proc/net/appletalk”,R_OK)=-1 enoint(没有这样的文件或目录) access(“/proc/sys/net/econet”,R_OK)=-1 enoint(没有这样的文件或目录) access(“/proc/sys/net/ash”,R\u OK)=-1 enoint(没有这样的文件或目录) access(“/proc/net/x25”,R_OK)=-1 enoint(没有这样的文件或目录) openat(AT_FDCWD,“/proc/net/dev”,O_RDONLY)=6 fstat(6,{st_mode=S_IFREG | 0444,st_size=0,…})=0 读(6,“内部接收”…,1024)=470 读(6,“,1024)=0 关闭(6)=0 ioctl(5,SIOCGIFFLAGS,{ifr_name=“eth0”})=-1 ENODEV(没有这样的设备) openat(AT_FDCWD,“/usr/share/locale/locale.alias”,O_RDONLY | O_CLOEXEC)=6 fstat(6,{st_mode=S_IFREG | 0644,st_size=2995,…})=0 读取(6,“#地区名称别名数据库。\n#”..,4096)=2995 读(6,“,4096)=0 关闭(6)=0 openat(AT_FDCWD,“/usr/share/locale/en_US.UTF-8/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale/en_US.utf8/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale/en_US/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale/en.UTF-8/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale/en.utf8/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录)openat(AT_FDCWD,“/usr/share/locale/en/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale langpack/en_US.UTF-8/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale langpack/en_US.utf8/LC_MESSAGES/net tools.mo”,O_RDONLY)=-1 enoint(无此类文件或目录) openat(AT_FDCWD,“/usr/share/locale langpack/en_US/LC_MESSAGES/net tools.mo”,O