【发布时间】:2012-01-23 10:21:23
【问题描述】:
我正在尝试打开一个新的子进程,它将接受一些输入文件并在其他文件中生成输出。虽然这在大多数情况下都运行得很干净,但当我尝试进行一些压力测试时,它会失败并给我以下错误跟踪:
File "/home/admin/Workspace/.metadata/.plugins/org.eclipse.pde.core/pde-junit/org.eclipse.osgipython/util/media_info.py", line 161, in external_process
process = subprocess.Popen(command, shell=shell, close_fds=True, stderr=subprocess.PIPE)
File "/usr/local/lib/python2.6/subprocess.py", line 623, in __init__
errread, errwrite)
File "/usr/local/lib/python2.6/subprocess.py", line 1141, in _execute_child
raise child_exception
OSError: [Errno 7] Argument list too long
最初我认为我传递的命令(它是 4 个文件的绝对路径)比操作系统支持的要长。但即使将传递的绝对路径减少到原始值的 1/4。我仍然收到此错误。请注意,我不会一直收到此错误。大多数情况下,它经过 1000 次或更多次运行,而路径长度在所有情况下都保持不变。
【问题讨论】:
-
command的值是多少? -
你的代码在哪里?您确定
command变量中没有累积某些内容吗? -
否,命令变量是一个长度约为 200 个字符的字符串。这当然不会跨越任何操作系统限制。我正在打印这个值,我很确定那里没有任何积累。