diff options
Diffstat (limited to 'core/org.eclipse.cdt.core.aix/library/spawner.c')
-rw-r--r-- | core/org.eclipse.cdt.core.aix/library/spawner.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/core/org.eclipse.cdt.core.aix/library/spawner.c b/core/org.eclipse.cdt.core.aix/library/spawner.c index f07ce0221c9..b8707ca0e2b 100644 --- a/core/org.eclipse.cdt.core.aix/library/spawner.c +++ b/core/org.eclipse.cdt.core.aix/library/spawner.c @@ -249,23 +249,38 @@ Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj, switch (sig) { case 0: /* NOOP */ - status = kill(pid, 0); + status = killpg(pid, 0); + if(status == -1) { + status = kill(pid, 0); + } break; case 2: /* INTERRUPT */ - status = kill(pid, SIGINT); + status = killpg(pid, SIGINT); + if(status == -1) { + status = kill(pid, SIGINT); + } break; case 9: /* KILL */ - status = kill(pid, SIGKILL); + status = killpg(pid, SIGKILL); + if(status == -1) { + status = kill(pid, SIGKILL); + } break; case 15: /* TERM */ - status = kill(pid, SIGTERM); + status = killpg(pid, SIGTERM); + if(status == -1) { + status = kill(pid, SIGTERM); + } break; default: - status = kill(pid, sig); /* WHAT ?? */ + status = killpg(pid, sig); /* WHAT ?? */ + if(status == -1) { + status = kill(pid, sig); /* WHAT ?? */ + } break; } |