A interruptmodule.c

M setup.py
Implements an interrupt extension module which allows a subthread
to raise an interrupt in the main thread.
This commit is contained in:
Kurt B. Kaiser 2003-03-10 20:41:07 +00:00
parent a2369928b5
commit 98b15ab980
2 changed files with 51 additions and 1 deletions

View file

@ -0,0 +1,49 @@
/***********************************************************************
* interruptmodule.c
*
* Python extension implementing the interrupt module.
*
**********************************************************************/
#include "Python.h"
#ifndef PyDoc_STR
#define PyDoc_VAR(name) static char name[]
#define PyDoc_STR(str) str
#define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
#endif
/* module documentation */
PyDoc_STRVAR(module_doc,
"Provide a way to interrupt the main thread from a subthread.\n\n\
In threaded Python code the KeyboardInterrupt is always directed to\n\
the thread which raised it. This extension provides a method,\n\
interrupt_main, which a subthread can use to raise a KeyboardInterrupt\n\
in the main thread.");
/* module functions */
static PyObject *
setinterrupt(PyObject * self, PyObject * args)
{
PyErr_SetInterrupt();
Py_INCREF(Py_None);
return Py_None;
}
/* registration table */
static struct PyMethodDef methods[] = {
{"interrupt_main", setinterrupt, METH_VARARGS,
PyDoc_STR("Interrupt the main thread")},
{NULL, NULL}
};
/* module initialization */
void
initinterrupt(void)
{
(void) Py_InitModule3("interrupt", methods, module_doc);
}

View file

@ -1,5 +1,5 @@
import os, glob, sys
from distutils.core import setup
from distutils.core import setup, Extension
from distutils.command.build_py import build_py
from distutils.command.install_lib import install_lib
import idlever
@ -111,5 +111,6 @@ def _bytecode_filenames(self, files):
'install_lib':IDLE_Installer},
package_dir = {pkgname: pkg_dir},
packages = [pkgname],
ext_modules = [Extension("interrupt", ["interruptmodule.c"])],
scripts = [os.path.join(pkg_dir, idle_name)]
)