aboutsummaryrefslogtreecommitdiff
path: root/src/libutil
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2004-06-25 15:36:09 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2004-06-25 15:36:09 +0000
commitb113edeab780216b0590045b932be685d1399e9b (patch)
tree32c0e6e0006c211b43f91aad8529cff6c424306d /src/libutil
parente4883211f9482ec3255bd4e682635493e03466ca (diff)
* A flag `--keep-going / -k' to keep building goals if one fails, as
much as possible. (This is similar to GNU Make's `-k' flag.) * Refactoring to implement this: previously we just bombed out when a build failed, but now we have to clean up. In particular this means that goals must be freed quickly --- they shouldn't hang around until the worker exits. So the worker now maintains weak pointers in order not to prevent garbage collection. * Documented the `-k' and `-j' flags.
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/util.cc17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 5511b27c9..43ec2b9f3 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -492,20 +492,19 @@ void Pid::kill()
{
if (pid == -1) return;
- printMsg(lvlError, format("killing child process %1%") % pid);
+ printMsg(lvlError, format("killing process %1%") % pid);
/* Send a KILL signal to the child. If it has its own process
group, send the signal to every process in the child process
group (which hopefully includes *all* its children). */
if (::kill(separatePG ? -pid : pid, SIGKILL) != 0)
- printMsg(lvlError, format("killing process %1%") % pid);
- else {
- /* Wait until the child dies, disregarding the exit status. */
- int status;
- while (waitpid(pid, &status, 0) == -1)
- if (errno != EINTR) printMsg(lvlError,
- format("waiting for process %1%") % pid);
- }
+ printMsg(lvlError, (SysError(format("killing process %1%") % pid).msg()));
+
+ /* Wait until the child dies, disregarding the exit status. */
+ int status;
+ while (waitpid(pid, &status, 0) == -1)
+ if (errno != EINTR) printMsg(lvlError,
+ (SysError(format("waiting for process %1%") % pid).msg()));
pid = -1;
}