小编jvs*_*ech的帖子

**用于共享内存的非Boost**STL分配器

由于我工作的政策,我无法使用比1.33.1更新的Boost版本,并且无法使用比4.1.2更新的GCC版本.是的,它是垃圾,但我无能为力.Boost 1.33.1不包含进程间库.

也就是说,我的一个项目需要将一个std::map(或更可能是一个std::unordered_map)放入共享内存中.当进程由单个进程("服务器")加载并由许多其他进程读取时,它仅被写入/修改一次.我之前没有做过共享内存IPC所以这对我来说是一个相当新的领域.我看一下,shmget()但似乎我不能继续使用相同的共享内存密钥进行分配(因为我认为STL容器分配器需要它).

是否还有其他使用共享内存的NON-BOOST STL分配器?

编辑:已经做过的事情.Dobbs博士在2003年有一篇关于如何做到这一点的文章,我开始用它作为参考.但是,代码清单不完整,并且指向它们的链接会重定向到主站点.

编辑编辑:我不仅仅重写Boost.Interprocess的唯一原因是因为涉及的代码量很大.我只是想知道是否有一些比较简短的专门针对POSIX共享内存,我能重新从头开始写,因为网络之间的数据传输也受到了多天的审批流程...

c++ ipc shared-memory

11
推荐指数
1
解决办法
3554
查看次数

监控模式接口上的tcpdump - 没有捕获

我一直在使用tcpdump(版本4.1.1)尝试airmon-ng设置的监控模式界面捕获无线帧.我说"尝试"因为到目前为止还没有发生任何事情.这很奇怪:

tcpdump -i mon0

上面的命令工作正常.我看到所有的信标和探测请求以及屏幕上可以显示的所有其他帧.但是,当我尝试使用输出将输出写入捕获文件时

tcpdump -i mon0 -w captures.cap

绝对没有被捕获,包括包含实际数据的第3层数据包.当我杀死tcpdump时,它给了我

13507 packets captured
13507 packets received by filter
0 packets dropped by kernel

(13507在这种情况下是任意数字)和完全空的捕获文件.

但是,当我在同一界面上使用tshark或wireshark执行捕获时,帧会被捕获到文件而没有任何问题.

我更喜欢使用tcpdump而不是wireshark,因为它没有GUI的开销,它有"-z"选项,它允许我获取捕获文件并将其传递给shell脚本,将其复制到另一台计算机在我的网络上.tshark或wireshark没有类似的功能,我非常希望避免编写程序来检查捕获文件是否存在.

我对tcpdump的工作方式有一个根本的误解,或者这里肯定有什么奇怪的事情发生?是否有更好的方法来做我正在做的事情,或者我将不得不编写自己的基于libpcap的捕获程序?

linux wireless tcpdump wireshark libpcap

5
推荐指数
1
解决办法
7702
查看次数

标签 统计

c++ ×1

ipc ×1

libpcap ×1

linux ×1

shared-memory ×1

tcpdump ×1

wireless ×1

wireshark ×1