大家好啊,上一回中咱們說的是進程間同步與相互排斥的樣例,這一回咱們說說用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信號重啟進程,如果大家想了解更多相關內容,請持續關注本站,武林小編將在第一時間為大家帶來更好的經典內容。