[C++-sig] Why can't kill process by Ctrl-c in a boost.python module with an endless loop

simon zhang hapopen at gmail.com
Sun Dec 23 08:59:07 CET 2012


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.cppsig at 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>
> usring namespace 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:
>
> 1234.....................
>
>  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 listCplusplus-sig at python.orghttp://mail.python.org/mailman/listinfo/cplusplus-sig
>
>
>
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig at python.org
> http://mail.python.org/mailman/listinfo/cplusplus-sig
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/cplusplus-sig/attachments/20121223/52d9dab4/attachment.html>


More information about the Cplusplus-sig mailing list