mirror of https://gitee.com/bigwinds/arangodb
SIGCHLD
This commit is contained in:
parent
294d89c5e3
commit
41ae9c8ea7
|
@ -220,6 +220,15 @@ static bool CreatePipes (int* pipe_server_to_child,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief handler for SIGCHLD
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static void handleSigchld (int sig) {
|
||||||
|
// intentionally do nothing here
|
||||||
|
// we'll use waitpid() for reaping children later
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief starts external process
|
/// @brief starts external process
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -1265,7 +1274,7 @@ bool TRI_KillExternalProcess (TRI_external_id_t pid) {
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void TRI_InitialiseProcess (int argc, char* argv[]) {
|
void TRI_InitialiseProcess (int argc, char* argv[]) {
|
||||||
if (ProcessName != 0) {
|
if (ProcessName != nullptr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1275,6 +1284,17 @@ void TRI_InitialiseProcess (int argc, char* argv[]) {
|
||||||
|
|
||||||
TRI_InitVectorPointer(&ExternalProcesses, TRI_CORE_MEM_ZONE);
|
TRI_InitVectorPointer(&ExternalProcesses, TRI_CORE_MEM_ZONE);
|
||||||
TRI_InitMutex(&ExternalProcessesLock);
|
TRI_InitMutex(&ExternalProcessesLock);
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
|
// initialise a signal handler for SIGCHLD
|
||||||
|
struct sigaction sa;
|
||||||
|
sa.sa_handler = &handleSigchld;
|
||||||
|
sigemptyset(&sa.sa_mask);
|
||||||
|
sa.sa_flags = SA_RESTART | SA_NOCLDSTOP;
|
||||||
|
if (sigaction(SIGCHLD, &sa, 0) == -1) {
|
||||||
|
// installation of signal handler failed
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Reference in New Issue