我一直在这个问题上一段时间了,我无法解决它。我正在制作子进程,然后这些子进程打开更多进程(实际上是 selenium webdrivers )。webdriver很容易崩溃,所以我构建了这个分层系统,以便主进程可以生成子进程,并在需要时杀死/重新生成它们。
我面临的问题是,如果我运行主线程并按 Ctrl+C,所有的孩子和这些孩子的孩子(浏览器)都会死掉。但是,当我尝试以编程方式执行此操作时,无论是 ((Popen) proc).kill(),我都尝试过 SIGINT、SIGTERM。我试过了,.terminate,os.kill,os,killpg。无论我做什么,硒进程都不会死,但是当我按下 Ctrl+C 时,它们都会死。
代码:这是我制作线程的方法。这怎么会引起问题?
proc = subprocess.Popen( ["python" , module_path() + "/scraper.py"], stdout=subprocess.PIPE ,stdin=subprocess.PIPE)
所以我的主要问题是,有没有办法调用终端中发生的 Ctrl+C 效果。我最初尝试使用线程,但它们只是一直死锁(为什么我不知道,它们没有共享内存,没有依赖关系)。Python不是我的主要语言,任何帮助都是一种沉淀。
谢谢你。基兰