Linux OS中的Python OSError no 7(参数列表太长)

时间:2012-01-23 10:21:23

标签: python linux

我正在尝试打开一个新的子进程,它将获取一些输入文件并在其他文件中生成输出。虽然大部分时间都运行得很干净,但当我尝试进行一些压力测试时,这会失败并给出以下错误跟踪:

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次或更多次运行,而路径长度在所有情况下保持不变。

1 个答案:

答案 0 :(得分:2)

strace是你的朋友。投掷-s 2048,看看究竟发生了什么。知道C会帮助你阅读这篇文章,但是你仍然可以在没有C知识的情况下选出长的exec *字符串。

http://stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html