首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SIGTERM绑定到成员函数

将SIGTERM绑定到成员函数
EN

Stack Overflow用户
提问于 2015-09-11 14:58:08
回答 1查看 730关注 0票数 0

我想用std::bind创建一个用于信号处理的简单类(仅供参考)。但是,我无法编译这段代码:

代码语言:javascript
复制
#include <iostream>
#include <functional>
#include <csignal>
using namespace std;

class SignalHandler
{   
public:

    void handler(int value)
    {
        cout << value << endl;
    }

    SignalHandler()
    {
        auto callback = std::bind(&SignalHandler::handler, this, std::placeholders::_1);

        sighandler_t ret = std::signal(SIGTERM, callback);
        if (SIG_ERR == ret) {
            throw;
        }
    }

};

int main() {

    SignalHandler handler;

    raise(SIGTERM);

    return 0;
}

(GCC)编译器退出: prog.cpp:在构造函数'SignalHandler::SignalHandler()':prog.cpp:21:51: prog.cpp:21:51:无法将'std::_Bind(SignalHandler*,std::_Placeholder<1>)‘转换为'__sighandler_t { to void (Int)}’,用于参数'2‘到'void’(信号(int,__sighandler_t))(int)‘sighandler_t =std::SIGTERM,回调;

EN

回答 1

Stack Overflow用户

发布于 2015-09-11 16:02:52

您可以使用静态方法来处理SIGTERM等。我以前也这么做过。static是获得匹配签名的关键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32526446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档