父母进程“听”孩子的消息

时间:2016-10-15 15:45:47

标签: c++ c parent-child ipc

我正在尝试创建一个捕获某些数据包并对其进行分析的程序。我使用pcap_loop来捕获数据包,这意味着我的程序无限期地停留在此命令上。所以我的解决方案是创建2个proccesses,其中一个将捕获数据包(child),另一个将使用提取的信息进行分析(parent)。由于程序无限期运行并且分析是实时进行的,我希望程序看起来像这样:

子:

capture_packets(packet_foo());

packet_foo() {
    extract_info();
    send_to_parent()
}

父:

while(1) {
    wait_for_msg_from_child();
    recv_msg();
    analyze();
    printf();
}

我希望你明白我在做什么。是否有可能创造这种沟通?有没有更好的方法来做到我想不到的?

感谢。

1 个答案:

答案 0 :(得分:0)

通常你可以使用一个容器,在你的情况下是一个队列

std::queue

你能做些什么是生产者/消费者模式。

父启动子线程,它将监视任何信息并将它们发送给父级。但是如何?

通过将它们放在队列中,保留订单(FIFO),在父端,您需要检查队列中是否存在某些信息。如果不是你没有任何事情要做。但如果有一些,你可以一个接一个地处理它们。你可以处理它们。

请注意,std :: queue不是线程安全的,因此您要么编写自己的线程安全实现,要么保护父节点和子节点之间共享的互斥锁对std :: queue的访问。