父级处理"listening"子消息
Parent proccess "listening" to child's messages
我正在尝试创建一个程序来捕获某些数据包并分析它们。我使用pcap_loop
来捕获数据包,这意味着我的程序无限期地停留在这个命令上。因此,我的解决方案是创建2个进程,其中一个将捕获数据包(子),另一个将使用提取的信息进行分析(父)。由于程序无限期地运行并且实时进行分析,我希望程序看起来像这样:
孩子:
capture_packets(packet_foo());
packet_foo() {
extract_info();
send_to_parent()
}
父:
while(1) {
wait_for_msg_from_child();
recv_msg();
analyze();
printf();
}
我希望你明白我在努力做什么。有可能创造这种交流吗?有没有我想不到的更好的方法?
谢谢。
通常你可以使用一个容器,在这里是一个队列
std::队列
你可以用它做的是一个生产者/消费者模式。
父线程启动子线程,子线程将监视所有信息并将其发送给父线程。但是怎么做呢?
通过将它们放在队列中,顺序得到保留(FIFO),并且在父端,您将需要检查队列中是否存在某些信息。如果没有,你就没有什么可做的了。但如果有的话,你就一个接一个地处理它们。
注意std::queue不是线程安全的,所以你要么自己编写线程安全的实现,要么通过父级和子级共享的互斥锁来保护对std::queue的访问
相关文章:
- boost::进程间消息队列引发错误
- 在线编译器中的分段C++没有打印消息
- C++错误消息*成员参考.**初学者*
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何通过参数抛出错误消息
- 从服务器传输到客户端的消息不会出现
- ROS2 动态消息模板
- C++秘密消息学校作业
- glad 导致 glfwSwapBuffers 返回错误消息
- C++入门 5 版:类消息和文件夹
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 重新定义预定义的 errno 错误消息 (E2BIG)
- Libmosquitto publish 不会将所有消息传递到 Azure IoT Hub
- 父级处理"listening"子消息