1

我正在用 Python (Django) 编写一个 Web 应用程序,它将在旁边执行任务/进程,通常是网络扫描。我希望用户能够终止扫描,实时查看其状态或结果。

我认为最好的方法之一是拥有一个独立进程的作业管理器守护进程,即:

  1. 通过 TCP 连接接受新作业。
  2. 接受用户命令,通常用于终止或重新启动进程。
  3. 报告作业的状态。

我正在为这段代码的结构而苦苦挣扎。我认为守护进程上的 TCP 端口将接受新作业。然后它将创建一个 os.fork(),它本身将创建一个 os.fork()。第二个 fork 将为 nmap 执行 os.execv()。第一个 os.fork() 将监视第二个 fork(如何?),当它完成时,它将向主守护进程报告它已经结束。第一个 fork 还必须能够终止第二个子进程。

听上去怎么样?是否已经完成了这样的结构?我不想重新创建轮子。

最后,子进程如何知道第二个孩子,即运行 os.execv() 的那个已经终止?或者它是否还在运行?我讨厌不断地轮询进程列表。

正如我所说,这必须在 Python 中完成。

4

1 回答 1

0

我选择了基于分叉的方法。这种方法是“错误的”,但它有效并满足了我的需求。 https://gist.github.com/FarhansCode/a0f27469142b6afaa6c2

于 2016-03-07T20:46:51.913 回答