【发布时间】:2016-10-15 15:45:47
【问题描述】:
我正在尝试创建一个程序来捕获某些数据包并对其进行分析。我使用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();
}
我希望你明白我想要做什么。是否有可能创造这种交流方式?有没有更好的方法来做到这一点,我想不出?
谢谢。
【问题讨论】:
-
当然,两个进程可以通信,尤其是在只有一个方向的情况下。你甚至可以走这么远,设计一个简单的文本协议,让两者通过管道进行对话,例如
child | parent或capture_packets | analyzer. -
是的,我知道这绝对有可能,但我对父母“等待”孩子发送消息的部分更感兴趣
-
您使用哪种编程语言?
-
我使用的是 C++,但我主要使用 C 风格的编程,因为我对它不是很有经验
-
使用管道,父级将阻塞直到有东西要读取。所以等待是“免费”的。
标签: c++ c parent-child ipc