考虑以下python代码(在所有情况下都以apache服务器的用户身份运行):
import subprocess as sp
_fname_in ='/path/to/existing/dir/file_in.pdf'
_fname_out='/path/to/existing/dir/file_out.pdf'
_from_page=1
_to_page=4
cmd = [
'/usr/bin/pdftk',
'A=%(_fname_in)s'%locals(),
'cat',
'%(_from_page)s-%(_to_page)s'%locals(),
'output',
'%(_fname_out)s'%locals(),
]
p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE)
output, errors = p.communicate()
在uwsgi和ipython中运行时,上述代码的行为不同:
当发生这种情况时,ps output将显示与该命令相关的2个进程:
用uwsgi python的PID的PPID调用shell,命令行如下:
sh-c/usr/bin/pdftk A/path/to/existing/dir/file文件_以.pdf格式
注意用' '
替换了'='
现在,如果我运行ipython的命令,我会得到第三个行为:pdftk的语法错误。
让我困惑的是,同一个命令,在同一个SHELL下呈现不同的结果。你知道吗
请解释为什么会发生这种情况。。。。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐