这是一个简单的问题,但是我找不到任何与我的问题相关的东西,所以在这里,我试图用Python执行一个C程序来获得输出,问题是它不能工作。 我没有错误,但是当我试图打印输出时,我什么也没有得到,比如空白或者其他什么,但是如果我打印输出的内容(这是一个单词吗?)在我的C语言中,它工作得很好,所以下面是我的python代码:
command = "./serialize %s %s %s" %(binary , width , height)
p=subprocess.Popen(command, shell=True,stderr=subprocess.STDOUT)
(output, err) = p.communicate()
print output
(相当直接,二进制是一个字符串,宽度和高度是整数)
如果你想知道,这是我的C代码:
^{pr2}$(serialize是我做的一个非常好用的函数,我知道这是因为在返回之前printf提供了我想要的)。在
如果你有什么好主意的话,谢谢大家。在
这里有两个问题:
Popen
接受一个列表的参数,而不是一个字符串。当shell=True
时传递该参数是一个严重的安全隐患。想象一下如果width
等于; rm -rf /
。在Popen
不等待进程返回。在尝试:
如果要在一个字符串中同时使用stdout和stderr,请执行以下操作:
^{pr2}$你的C代码也不正确。}。如果传递的参数少于3个,它也会严重崩溃。另外,
main
应该返回一个int
,并且可以使用puts(r)
而不是{argc
也是int
。尝试类似于:相关问题 更多 >
编程相关推荐