Ответ 1
Похоже, вы ищете ответ, используя API-интерфейсы разработки python из Python.h. Вот пример для вас, который должен работать:
#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, но это просто основная идея.
Надеюсь, что это поможет!