summaryrefslogtreecommitdiffstats
path: root/bin/sh/jobs.c
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2010-12-21 22:47:34 +0000
committerjilles <jilles@FreeBSD.org>2010-12-21 22:47:34 +0000
commitae2aabc34981e0a4fc74b41bde3cfd6ff4166022 (patch)
tree571f5b4935a3ac4f69aff2b5cfb327687b1f59fe /bin/sh/jobs.c
parent0a77d10ec99ee3d8cfd396b81e6fb1d1a9c4e1de (diff)
downloadFreeBSD-src-ae2aabc34981e0a4fc74b41bde3cfd6ff4166022.zip
FreeBSD-src-ae2aabc34981e0a4fc74b41bde3cfd6ff4166022.tar.gz
sh: Add kill builtin.
This allows specifying a %job (which is equivalent to the corresponding process group). Additionally, it improves reliability of kill from sh in high-load situations and ensures "kill" finds the correct utility regardless of PATH, as required by POSIX (unless the undocumented %builtin mechanism is used). Side effect: fatal errors (any error other than kill(2) failure) now return exit status 2 instead of 1. (This is consistent with other sh builtins, but not in NetBSD.) Code size increases about 1K on i386. Obtained from: NetBSD
Diffstat (limited to 'bin/sh/jobs.c')
-rw-r--r--bin/sh/jobs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c
index 6a781ea..fda167b 100644
--- a/bin/sh/jobs.c
+++ b/bin/sh/jobs.c
@@ -632,6 +632,14 @@ currentjob: if ((jp = getcurjob(NULL)) == NULL)
}
+pid_t
+getjobpgrp(char *name)
+{
+ struct job *jp;
+
+ jp = getjob(name);
+ return -jp->ps[0].pid;
+}
/*
* Return a new job structure,
OpenPOWER on IntegriCloud