#include "Python.h" #include #include #include PyObject* py_main(PyObject *_, PyObject *args); static PyMethodDef mtds[] = { {"py_main", py_main, METH_VARARGS}, {NULL, NULL, 0, NULL} }; PyMODINIT_FUNC initpymain(void) { Py_InitModule("pymain", mtds); } void* dead(void*_) { for(;;) { puts("..."); sleep(3); } } void blah(int argc, char **argv) { int i; pthread_t t; for(i = 0; i < argc; ++i) puts(argv[i]); pthread_create(&t, NULL, dead, NULL); } PyObject* py_main(PyObject *_, PyObject *args) { int sz; int i; int argc; char ** argv; if(!PyTuple_Check(args)) Py_RETURN_NONE; sz = PyTuple_Size(args); for(i = 0; i < sz; ++i) if(!PyString_Check(PyTuple_GetItem(args, i))) Py_RETURN_NONE; argc = sz + 1; argv = malloc(argc * sizeof(char *)); argv[0] = "py ewm II"; for(i = 1; i < argc; ++i) { const char *str = PyString_AsString(PyTuple_GetItem(args, i - 1)); argv[i] = malloc(strlen(str + 1)); strcpy(argv[i], str); } blah(argc, argv); Py_RETURN_NONE; }