我正在使用nmap和C创建一个简单的网络扫描功能。我想使用popen()来执行nmap,但是nmap需要将近30秒才能完成,因为我正在扫描各种IP。
那么,有没有办法检查命令何时执行完毕?我不希望我的C代码在系统调用时挂起,而是我想在循环中检查一个标志或什么东西,它会知道popen / nmap何时完成,所以我的C程序的其他部分不会来停了下来。这可能吗?
谢谢!
答案 0 :(得分:2)
我可以想到两种直接的方式来做到这一点
你可以直接fork()
然后建立一种沟通这两个过程的方法,这将非常困难,因为IPC不是一件容易的事。
您可以使用pthread_create()
创建一个新线程,并在那里调用popen()
,这将更容易,您可以通过使用适当的锁定机制来防止竞争条件在线程之间共享数据
答案 1 :(得分:0)