使用信号Signal进行流程控制

使用场景(个人场景):

    在 图像处理过程中,在不挂载gdb的情况下,将内存中的数据导出出来(导出的动作程序中已经写好)

如:

...
if (b_out2disk)
{
    // 数据或者图像导出到磁盘
}
...

我们使用signal来控制“b_out2disk”,从而可以灵活的操作:

#include <iostream>
#include <signal.h>
#include <thread>

bool g_b_out2disk = false;

void signal_start()
{
    g_b_out2disk = true;
}

void signal_end()
{
    g_b_out2disk = false;
}

int main()
{
    // 关键部分
    signal(63, signal_start);
    signal(64, signal_end);
    
    while(true)
    {
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    return 0;
}

完成类似上述代码,就可以通过:

kill -63 pid 来打开开关

kill -64 pid 来关闭开关

上一篇:【图片处理】cocos2dx png图片压缩处理


下一篇:代理模式