I was at least half right, then. Python was eating the signals. :)
As an alternative, to prevent yourself from having to do this in every
loop in your code, you might try this on the python side:
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
That'll stop Python from catching SIGINT globally and will always send
the SIGINT down to the C++ and terminate.
Of course, that may or may not be an option depending on your specific
needs.
On 12/23/2012 3:02 AM, simon zhang wrote:
This is the answer from the stackoverflow.
| while (true) { //endless loop
++it;
std::cout<< it<<std::endl;
sleep(3);
if(PyErr_CheckSignals() == -1) {
exit(1);
}
}|
2012/12/23 Jaedyn K. Draper <jaedyn.cpp...@jaedyn.co
<mailto:jaedyn.cpp...@jaedyn.co>>
Oh, my mistake. Not sure then, I've only embedded, never extended.
Maybe someone else can help. :(
On 12/23/2012 1:59 AM, simon zhang wrote:
But I don't call Py_Initialize().I call C++ code in
Python.Don't embed the Python to C++...
2012/12/23 Jaedyn K. Draper <jaedyn.cpp...@jaedyn.co
<mailto:jaedyn.cpp...@jaedyn.co>>
Instead of Py_Initialize() (wherever it is you call it), try
calling Py_InitializeEx(0). Py_Initialize() (or
Py_InitializeEx(1)) binds signal handlers (including SIGINT)
to send python exceptions instead of killing the process.
This may be what's hitting you.
On 12/23/2012 1:44 AM, simon zhang wrote:
I have make a boost.python module with an endless loop.But I
can't kill the process by ctrl-c.The following is an example.
C++
|#include <boost/python.hpp>
#include <boost/python.
module.hpp>
#include <boost/python.
def.hpp>
#include <iostream>
usringnamespace boost::python;
void foo() {
int it=0;
while (true) { //endless loop
++it;
std::cout<< it<<std::endl;
sleep(3);
}
}
BOOST_PYTHON_MODULE(ctopy)
{
def("foo",foo);
}|
python:
|import ctopy
ctopy.foo()|
result:
|1
2
3
4
.....................|
I can't kill the foreground process by Ctrl-c.why the module
don't accept signal "SIGINT" that was sent by Ctrl-c.How to
make it work.
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org <mailto:Cplusplus-sig@python.org>
http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org <mailto:Cplusplus-sig@python.org>
http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org <mailto:Cplusplus-sig@python.org>
http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org <mailto:Cplusplus-sig@python.org>
http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig