0

我编写了一个 Python 脚本,它使用subprocess.Popen. 例如:

svn ls svn+ssh://url1/trunk
svn cp svn+ssh://url1/trunk svn+ssh://url1/branch/1 --parents -m "blah"

对于每个命令,我创建一个 subprocess.Popen 对象:

p = subprocesp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT)

并等待它完成:

output      = p.communicate()[0].strip()
return_code = p.returncode

问题是,svn cp对于复制不存在的 repos 时在 shell 上立即失败的某些命令,p.communicate()永远不会返回.

额外的信息:

  • 代码使用线程池 ( multiprocessing.pool.ThreadPool)执行
  • 这种现象只在失败时表现出来
  • 使用 shell,完全相同的命令在不到两秒的时间内以错误代码 1 结束。

知道我在这里想念什么吗?

4

1 回答 1

1

奇怪的是,问题出在 Eclipse。该脚本在 shell 中运行良好,但在内部 Eclipse 终端中永远等待。

于 2013-07-30T02:07:31.013 回答