我制作了一个带有无限循环的boost.python模块,但是我无法通过ctrl-c终止该进程.以下是一个示例.C#include boost/python.hpp#include boost/python.module.hpp#include boost/python.def.hpp#include iost...

我制作了一个带有无限循环的boost.python模块,但是我无法通过ctrl-c终止该进程.以下是一个示例.
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()
结果:
1
2
3
4
.....................
我无法通过Ctrl-c杀死前台进程.为什么模块不接受Ctrl-c发送的信号“ SIGINT”.如何使其工作.
解决方法:
您应该在扩展代码中定期调用PyErr_CheckSignals(),如果返回-1,则调用exit():
while (true) { //endless loop
++it;
std::cout<< it <<std::endl;
sleep(3);
if(PyErr_CheckSignals() == -1) {
exit(1);
}
}
沃梦达教程
本文标题为:无法通过无限循环的boost.python模块中的Ctrl-c终止进程


基础教程推荐
猜你喜欢
- shell脚本安装python、pip--不需要选择安装项目 2023-09-04
- Python实现图片和视频的相互转换 2023-08-08
- Python中并发、进程、线程的总结 2023-09-03
- Python 线程与进程 2023-09-03
- linux-Centos7安装python3并与python2共存 2023-09-04
- Python办公自动化之Excel介绍 2023-08-09
- 进程与线程(3)- python实现多线程 2023-09-04
- xshell和python环境安装 2023-11-11
- python3 与linux间的小知识 2023-11-11
- python 进程池pool 2023-09-04