summaryrefslogtreecommitdiffstats
path: root/usr.bin/truss
diff options
context:
space:
mode:
authorcracauer <cracauer@FreeBSD.org>1998-08-24 10:17:20 +0000
committercracauer <cracauer@FreeBSD.org>1998-08-24 10:17:20 +0000
commitf3d290b0b53aa55bf027aba6c54dd0e5b1d101f3 (patch)
treef26bf7d06a6acaf0ba2829e55a588da97f3ea4a7 /usr.bin/truss
parent5112766b07ec301856c63e772236ab606ccb7942 (diff)
downloadFreeBSD-src-f3d290b0b53aa55bf027aba6c54dd0e5b1d101f3.zip
FreeBSD-src-f3d290b0b53aa55bf027aba6c54dd0e5b1d101f3.tar.gz
When exiting on SIGINT, exit with signal status
Diffstat (limited to 'usr.bin/truss')
-rw-r--r--usr.bin/truss/main.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/usr.bin/truss/main.c b/usr.bin/truss/main.c
index c83946a..e5bca66 100644
--- a/usr.bin/truss/main.c
+++ b/usr.bin/truss/main.c
@@ -31,7 +31,7 @@
#ifndef lint
static const char rcsid[] =
- "$Id: main.c,v 1.8 1998/01/07 06:19:50 jmg Exp $";
+ "$Id: main.c,v 1.9 1998/07/06 21:01:47 bde Exp $";
#endif /* not lint */
/*
@@ -127,6 +127,7 @@ main(int ac, char **av) {
struct ex_types *funcs;
int in_exec = 0;
char *fname = NULL;
+ int sigexit = 0;
while ((c = getopt(ac, av, "p:o:S")) != -1) {
switch (c) {
@@ -216,6 +217,7 @@ main(int ac, char **av) {
break;
case S_SIG:
fprintf(outfile, "SIGNAL %lu\n", pfs.val);
+ sigexit = pfs.val;
break;
case S_EXIT:
fprintf (outfile, "process exit, rval = %lu\n", pfs.val);
@@ -232,5 +234,11 @@ main(int ac, char **av) {
if (ioctl(Procfd, PIOCCONT, val) == -1)
warn("PIOCCONT");
} while (pfs.why != S_EXIT);
+ if (sigexit) {
+ if (sigexit == SIGQUIT)
+ exit(sigexit);
+ (void) signal(sigexit, SIG_DFL);
+ (void) kill(getpid(), sigexit);
+ }
return 0;
}
OpenPOWER on IntegriCloud