summaryrefslogtreecommitdiff
path: root/src/tee.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1996-10-29 04:16:59 +0000
committerJim Meyering <jim@meyering.net>1996-10-29 04:16:59 +0000
commit84b8cf9fcf25a4e288841f690879a898417b7d99 (patch)
treec3f24ab8f6ec0db90f3ee00d4cd577886e7dd496 /src/tee.c
parentc673119b0bd614641831b7b8540dc0447f293d5f (diff)
downloadcoreutils-84b8cf9fcf25a4e288841f690879a898417b7d99.tar.xz
(main): Ignore SIGPIPE.
Diffstat (limited to 'src/tee.c')
-rw-r--r--src/tee.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/tee.c b/src/tee.c
index 458c50ba4..fe104a8e9 100644
--- a/src/tee.c
+++ b/src/tee.c
@@ -135,6 +135,21 @@ main (int argc, char **argv)
#endif /* _POSIX_SOURCE */
}
+ /* Don't let us be killed if one of the output files is a pipe that
+ doesn't consume all its input. */
+#ifdef _POSIX_SOURCE
+ {
+ struct sigaction sigact;
+
+ sigact.sa_handler = SIG_IGN;
+ sigemptyset (&sigact.sa_mask);
+ sigact.sa_flags = 0;
+ sigaction (SIGPIPE, &sigact, NULL);
+ }
+#else
+ signal (SIGPIPE, SIG_IGN);
+#endif
+
errs = tee (argc - optind, (const char **) &argv[optind]);
if (close (0) != 0)
error (1, errno, _("standard input"));