C-使用Popen()执行慢速进程



我正在使用NMAP和C创建一个简单的网络扫描函数多种IP。

那么,有没有办法检查命令何时完成执行?我不希望我的C代码挂在系统呼叫上,而是想检查一个标志或循环中的某些内容,这些旗帜会知道Popen/nmap何时完成,以便我的C程序的其他部分不会来停顿。这有可能??

谢谢!

我可以想到2种直接的方法

  1. 您可以直接fork(),然后建立一种传达这两个过程的方法,这将非常困难,因为IPC并不容易。

  2. 您可以使用pthread_create()创建一个新线程并在那里致电popen(),它会容易得多,并且可以使用适当的锁定机制来防止比赛条件共享线程之间的数据。

您可以使用叉(Hardmode)

使用多处理

或者您可以使用pthread(easymode)

使用多线程

任何一个允许您一次做2件事。多处理很难,因为您必须担心InnerProccess通信(管道),而您尝试执行的两个任务无法共享内存。

多线程更容易,因为您只需要包括库(-lpthread),然后指定单独线程上的函数。

最新更新