我正在尝试打开一个新的子进程,它将接受一些输入文件,并在其他文件中生成输出。虽然它在大多数情况下都运行得很干净,但当我尝试进行一些压力测试时,它会失败,并给出以下错误跟踪:
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或更多的运行之后,而路径长度对于所有情况都保持不变。
发布于 2012-10-27 03:07:45
strace是你的朋友。再加上一台-s 2048,看看到底发生了什么。了解C语言将帮助您阅读本文,但您仍然可以在不了解C语言的情况下挑选出长的exec*字符串。
http://stromberg.dnsalias.org/~strombrg/debugging-with-syscall-tracers.html
https://stackoverflow.com/questions/8970121
复制相似问题