首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python子进程命令执行受阻

Python子进程命令执行受阻
EN

Stack Overflow用户
提问于 2014-01-13 19:35:43
回答 1查看 542关注 0票数 0

在使用python子流程模块执行的unix命令被卡住时,我遇到了一个问题:(完整的代码在这里:https://github.com/discoproject/disco/blob/master/lib/disco/worker/classic/func.py)

unix命令是一个简单的就地排序。创建流程的方式:

env = os.environ.copy() env‘’LC_ALL‘= 'C’cmd,shell = sort_cmd(filename,sort_buffer_size) subprocess.check_call(cmd,env=env,shell=shell)

其中sort_cmd是:

def sort_cmd(文件名,sort_buffer_size):返回(r“-z -T‘\xff’-k 1,1 -T. -S {0} -o {1} {1}”.format(sort_buffer_size,filename),True)

排序命令的输入文件(也是输出文件)为空。在调用此命令之前,文件不是空的(它是打印的)。

问题是,如果这是python问题,那么文件怎么可能是空的。(一个假设是这个python2.7bug:http://bugs.python.org/issue19809)。

在排序过程中发出暂停显示它被卡在一个futex上。不幸的是,我无法重现这个问题,也没有输入文件。当手动终止排序进程时,它会返回(当然有一个错误)。

我正在使用gnu coreutils 8.10

EN

回答 1

Stack Overflow用户

发布于 2014-01-13 19:53:13

这不可能是python问题,因为这一切都发生在子subshell中,Python根本不知道它是一个文件名。

实际上,sort命令输出它的输出文件以编写并清空它。如果同时是输入文件,则会丢失。

解决方案可以是将所有内容输出到一个临时文件中,然后将其重命名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21099839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档