diff options
author | Sergei Golubchik <serg@mariadb.org> | 2015-03-06 18:41:32 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2015-03-06 18:41:32 +0100 |
commit | 5f510a91759823e6be19e6bac74acb0b76cbdaa7 (patch) | |
tree | 3c53a13f0135dfc139c8806f3be8a7d00d313b9e /mysql-test/lib | |
parent | e13459a11eb5938b54b88c7a1529491df6dd3b49 (diff) | |
parent | 17a37796e1947e2227824416d297a746a1dc6c26 (diff) | |
download | mariadb-git-5f510a91759823e6be19e6bac74acb0b76cbdaa7.tar.gz |
Merge branch '5.5' into 10.0
Diffstat (limited to 'mysql-test/lib')
-rw-r--r-- | mysql-test/lib/My/SafeProcess/safe_process.cc | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/mysql-test/lib/My/SafeProcess/safe_process.cc b/mysql-test/lib/My/SafeProcess/safe_process.cc index d6110f5f8c8..feb3eb4df66 100644 --- a/mysql-test/lib/My/SafeProcess/safe_process.cc +++ b/mysql-test/lib/My/SafeProcess/safe_process.cc @@ -125,7 +125,7 @@ extern "C" void handle_abort(int sig) message("Got signal %d, child_pid: %d, sending ABRT", sig, child_pid); if (child_pid > 0) { - kill (-child_pid, SIGABRT); // Don't wait for it to terminate + kill(-child_pid, SIGABRT); // Don't wait for it to terminate } } @@ -226,6 +226,18 @@ int main(int argc, char* const argv[] ) sleep(1); } + /* + Child: Make this process it's own process group to be able to kill + it and any its children that hasn't changed a group themselves) + + Parent: Detach from the parent's process group, so that killing a parent + group wouldn't kill us (if we're killed, there's no one to kill our child + processes that run in their own process group). There's a loop below + that monitors the parent, it's enough. + */ + setpgid(0, 0); + + if (child_pid == 0) { close(pfd[0]); // Close unused read end @@ -236,10 +248,6 @@ int main(int argc, char* const argv[] ) signal(SIGHUP, SIG_DFL); signal(SIGCHLD, SIG_DFL); - // Make this process it's own process group to be able to kill - // it and any childs(that hasn't changed group themself) - setpgid(0, 0); - if (nocore) { struct rlimit corelim = { 0, 0 }; |