gpt4 book ai didi

c++ - 父进程 "listening"到子消息

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:34 25 4
gpt4 key购买 nike

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

child :

capture_packets(packet_foo());

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

家长:

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

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

谢谢。

最佳答案

通常你可以使用一个容器,在你的例子中是一个队列

std::queue

您可以用它做的是生产者/消费者模式。

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

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

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

关于c++ - 父进程 "listening"到子消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com