首页 > 编程 > C > 正文

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

2020-02-24 14:33:41
字体:
来源:转载
供稿:网友

大家好啊,上一回中咱们说的是进程间同步与相互排斥的样例,这一回咱们说说用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信号重启进程,如果大家想了解更多相关内容,请持续关注本站,武林小编将在第一时间为大家带来更好的经典内容。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选