有这么一个例子。咱用C写了一个程序:
// calculator.c
#include <stdio.h>
#include <stdlib.h>
int main (int argc,char *argv[]) {
int i_argv0 = atoi(argv[1]);
printf("The program will return: %d * 2", i_argv0);
return i_argv0 * 2;
}
编译后命名为calculator
,功能就是把传进去的参数(整数)乘2并返回。
如果需要在Python里调用这个程序的功能,需要这么写:
# call.py
import subprocess
result = subprocess.run(["./calculator", "6"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(result.returncode)
第3行相当于执行./calculator 6
,即让被调用程序计算6*2的值。用result.returncode
即可获得返回值12。
如果想要得到被调用程序的输出文本,则加入
print(result.stdout.decode("utf-8"))
此例中,执行该命令将输出以下字符串。
The program will return: 6 * 2