Python.hのPython開発APIを使用して答えを探しているようです。動作するはずの例を次に示します。
#My python script called mypy.py
import sys
if len(sys.argv) != 2:
sys.exit("Not enough args")
ca_one = str(sys.argv[1])
ca_two = str(sys.argv[2])
print "My command line args are " + ca_one + " and " + ca_two
そして、これらの引数を渡すためのCコード:
//My code file
#include <stdio.h>
#include <python2.7/Python.h>
void main()
{
FILE* file;
int argc;
char * argv[3];
argc = 3;
argv[0] = "mypy.py";
argv[1] = "-m";
argv[2] = "/tmp/targets.list";
Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc, argv);
file = fopen("mypy.py","r");
PyRun_SimpleFile(file, "mypy.py");
Py_Finalize();
return;
}
C関数に引数を渡すことができれば、このタスクはさらに簡単になります。
void main(int argc, char *argv[])
{
FILE* file;
Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc, argv);
file = fopen("mypy.py","r");
PyRun_SimpleFile(file, "mypy.py");
Py_Finalize();
return;
}
あなたはそれらをまっすぐに通り抜けることができます。私のソリューションでは、時間の都合上、2つのコマンドライン引数のみを使用しましたが、渡す必要のある6つすべてに同じ概念を使用できます...もちろん、Python側でも引数をキャプチャするためのよりクリーンな方法がありますが、それは基本的な考え方です。
それが役に立てば幸い!