栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

linux c中优雅的结束程序示例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux c中优雅的结束程序示例

此程序主要利用linux c中的信号拦截与处理。

gcc 此程序.c

使用killall 程序名 或 kill 程序名可以输出信号名,注意kill -9 程序获取不了信号,错误处理要手动执行。

#include
#include
#include
#include
#include
#include

int ha_destroy()
{
    //处理程序退出
    return 1;
}

void sig_endler(int signo)
{
    switch(signo)
    {
        case SIGQUIT:
        {
            printf("SIGQUIT program");
            ha_destroy();
            exit(0);
        }
        break;
        case SIGINT:
        {
            printf("SIGINT program");
            ha_destroy();
            exit(0);
        }
        break;
        //优雅退出处理,可以添加必要的操作
        case SIGTERM:
        {
            printf("SIGTERM program");
            ha_destroy();
            exit(0);
        }
        break;
        default:
        {
            //正常退出
            ha_destroy();
            exit(0);
        }
        break;
    }
}

int main()
{
    signal(SIGINT , sig_endler);
    signal(SIGQUIT , sig_endler);
    signal(SIGTERM ,  sig_endler);
    while(1)
    {
        sleep(1);
        //逻辑
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号