Problem with writing an interface for system() call...

Fredrik Lundh fredrik at pythonware.com
Mon Jan 9 11:25:09 EST 2006


"haynes george" wrote:

> I was reading the tutorial "Extending and Embedding
> the python interpreter" available with python ..
>
> http://www.python.org/doc/2.2.3/ext/ext.html
>
> As per given in the tutorial i created an interface to
> the system() system call.
>
> this is the code of my module

your code doesn't compile:

spam.c(5) : error C2082: redefinition of formal parameter 'self'
spam.c(6) : error C2082: redefinition of formal parameter 'args'
spam.c(10) : warning C4047: 'function' : 'struct _object *' differs in levels of in
direction from 'int '
spam.c(10) : warning C4024: 'PyArg_ParseTuple' : different types for formal and
actual parameter 1
spam.c(18) : warning C4113: 'struct _object *(__cdecl *)()' differs in parameter
lists from 'struct _object *(__cdecl *)(struct _object *,struct _object *)'

if I fix the argument stuff so that the code matches the example in
the extending/embedding manual, the spam.system() call works just
fine over here.

> int main(int argc,char **argv)

umm.

what made you think it was a good idea to put a main() function in
an extension ?  the interpreter (or embedding application) already has
one, so you don't need to add another one...

> {
> // Py_SetProgName(argv[0]);
>
> /* I COMMENTED THE ABOVE CALL AS IT GAVE ME SOME WIERD
> ERROR */

weird as in

    unresolved external symbol _Py_SetProgName

? (it's Py_SetProgramName, not Py_SetProgName).

> I was even able to import the module into the python
> interpreter but caling the function gave me the
> following error
>
> Code:
> >>>import spam
> >>>spam.system("ls -l")
> python: Python/getargs.c:90: vgetargs1: Assertion
> `compat || (args != (PyObject*)((void *)0))' failed.
> Aborted
> [haynes at fosters:~/python]
> whaaaaattttt????
>
> any idea?

did you look for warnings from your compiler ?

</F>






More information about the Python-list mailing list