mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-06 20:14:56 +00:00
Perform execv in a forked child process, waiting on the original to exit to allow resources to be released.
This commit is contained in:
parent
dd534a8692
commit
b0fa94d52a
11
cgminer.c
11
cgminer.c
@ -2889,6 +2889,9 @@ static void clean_up(void);
|
|||||||
|
|
||||||
void app_restart(void)
|
void app_restart(void)
|
||||||
{
|
{
|
||||||
|
pid_t parent, child;
|
||||||
|
int status;
|
||||||
|
|
||||||
applog(LOG_WARNING, "Attempting to restart %s", packagename);
|
applog(LOG_WARNING, "Attempting to restart %s", packagename);
|
||||||
|
|
||||||
__kill_work();
|
__kill_work();
|
||||||
@ -2901,7 +2904,15 @@ void app_restart(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
parent = getpid();
|
||||||
|
child = fork();
|
||||||
|
if (child) {
|
||||||
|
applog(LOG_WARNING, "Shutting down original process");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
waitpid(parent, &status, 0);
|
||||||
execv(initial_args[0], (EXECV_2ND_ARG_TYPE)initial_args);
|
execv(initial_args[0], (EXECV_2ND_ARG_TYPE)initial_args);
|
||||||
|
/* We shouldn't get here */
|
||||||
applog(LOG_WARNING, "Failed to restart application");
|
applog(LOG_WARNING, "Failed to restart application");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user