Python OSError 7(参数列表太长)在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个文件的绝对路径)太长,超出了操作系统的支持范围。但即使我把绝对路径缩短到原来的四分之一,我仍然会遇到这个错误。请注意,我并不是每次都会遇到这个错误。通常是在运行了1000次或更多次后,路径长度在所有情况下都是一样的。
1 个回答
2
strace 是你的好帮手。加上 -s 2048 参数可以让你看到更详细的情况。了解 C 语言会帮助你更好地理解这些内容,但即使你不懂 C 语言,也能找到一些长的 exec* 字符串。
http://stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html