用C语言实现HUP信号重启进程

来源:爱站网时间:2019-03-04编辑:网友分享
大家好啊,上一回中咱们说的是进程间同步与相互排斥的样例,这一回咱们说说用C语言实现HUP信号重启进程,感兴趣的你可以跟随爱站技术小编往下看看,希望本文所提供知识点可以帮助到你。

大家好啊,上一回中咱们说的是进程间同步与相互排斥的样例,这一回咱们说说用C语言实现HUP信号重启进程,感兴趣的你可以跟随爱站技术小编往下看看,希望本文所提供知识点可以帮助到你。

代码如下所示:

复制代码 代码如下:

#include
#include
#include
#include
#include
#include
#include
#include
char **bak_argv;
int flag = 0;
void restart(void);
void sighup_handler(int sig);
// argv[0] 尽量使用绝对路径, 因为程序执行过程中可能会使用 chdir() .
int main(int argc, char *argv[])
{
openlog("sig_hup", LOG_PID, 0);
syslog(LOG_ERR, "%s", argv[0]);
closelog();

bak_argv = argv;
signal(SIGHUP, sighup_handler);

while(1)
{
if(flag)
restart();
sleep(10);
}
return 0;
}
void sighup_handler(int sig)
{
flag = 1;
}
void restart(void)
{
switch(fork())
{
case -1:
openlog("sig_hup", LOG_PID, 0);
syslog(LOG_ERR, "fork failed: %s", strerror(errno));
closelog();

exit(EXIT_FAILURE);
break;
case 0:
break;
default:
exit(EXIT_SUCCESS);
}
execv(bak_argv[0], bak_argv);

openlog("sig_hup", LOG_PID, 0);
syslog(LOG_ERR, "execv(%s, ...) failed: %s\n", bak_argv[0], strerror(errno));
closelog();

exit(EXIT_FAILURE);
}

以上就是用C语言实现HUP信号重启进程,如果大家想了解更多相关内容,请持续关注本站,爱站小编将在第一时间为大家带来更好的经典内容。

上一篇:C语言字符数组与字符串的使用解析

下一篇:C语言用字符串数组显示菜单的解决方法

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载