求助 :linux 用信号量机制实现重新启动程序
PHPz
PHPz 2017-04-17 11:16:26
[Linux讨论组]

思路如下 捕获信号量SIGINT ,再用execl重新在进程中载入自身 问题 前几次还好,但是后面就对ctrol + C 没反应了 不知道是啥问题

运行结果如下:
program start ....
./rsr
the 0 ...
^Csignal captured...
program start ....
./rsr
the 0 ...
^Csignal captured...
program start ....
./rsr
the 0 ...
^Cthe 1 ...
^C^Cthe 2 ...
^C^Cthe 3 ...
the 4 ...
the 5 ...
the 6 ...
the 7 ...
the 8 ...
the 9 ...

#include<stdio.h>
#include<signal.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>

void func(int sig);

int main (int argc, char* argv[])
{
    int i = 0;
    struct sigaction act,oldact;
    act.sa_handler=func;

    printf("program start ....\n");
    printf("%s\n",path);

    sigaction(SIGINT,&act,&oldact);

    for(;i<10;i++)
    {
        printf("the %d ...\n",i);

        sleep(1);

    }

    return 0;
}

void func(int i)
{
    printf("signal captured...\n");
        execl("/home/myx/yxsys/restart/rsr","./rsr",NULL);
}
PHPz
PHPz

学习是最好的投资!

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号