在atom-text-editor插件开发中,我运行了一个child_process,如
cp = require 'child_process'
command = "python /home/user45/jedi-python2-complete.py"
@jediServer = cp.exec command
我杀了这个过程,
process.kill(@jediServer.pid)
在ubuntu-os中,两个进程被创建为sh和python(jedi-python2-complete.py),但在fedora中只创建了一个进程(jedi-python2-complete.py)。
当我尝试使用process.kill杀死ubuntu中的进程时,只有sh-process被杀死但是python进程在后台继续运行..而在fedora中python进程被杀死了。
例如, 在ubuntu, sh pid-3560 python pid-3561
在fedora中的python-process pid- 3560
我相对尝试解决它,
process.kill(pid)
process.kill(pid+1)
但是还有其他任何方式。对于linux操作系统来说很常见。
答案 0 :(得分:1)
最好在名为BufferedProcess的child_process周围使用Atom的包装器。如果您使用自己的.kill方法,它将在Windows上正常终止进程。
您可以查看如何在此autocomplete-python包源中使用它。
答案 1 :(得分:0)
这为我工作,
cp = require 'child_process'
command = "python"
env = process.env
spawn = cp.spawn
@jediServer = spawn(command,[__dirname + jedi-python2-complete.py],env:env)
我杀了这个过程,
@jediServer.kill()
这在ubuntu,fedora中都是一样的,没有任何变化。 来自用户Michael Aquilina的推荐代码