summaryrefslogtreecommitdiff
path: root/src/tee.c
diff options
context:
space:
mode:
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"));