这两个函数都是无限循环,
一旦在同一线程中调用,程序就会挂起。
gtk_main();
...
pcap_loop(adhandle, 0, packet_handler, NULL);
当我点击“开始”按钮时,我希望pcap
开始工作;如果我按下“停止”按钮,pcap
> 停止。
如何创建子线程并运行 pcap_loop(adhandle, 0, packet_handler, NULL);
?
最佳答案
除非我遗漏了什么,否则你的问题是 GTK+ 和
libpcap 是围绕主循环触发的事件进行组织的。没有
翻阅文档,我不知道 GTK+,但是有
是 libpcap 的另一种操作模式:您可以使用 pcap_next() 或
pcap_next_ex()
而不放弃对程序流程的控制。
应该可以注册一个定期调用的函数
这两个函数之一使用 g_timeout_add()
或 g_idle_add()
,
无需搞乱线程和互斥机制
总共。
关于c - 如何创建一个新线程以使 pcap_loop() 和 gtk_main() 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793293/