[FFmpeg-cvslog] ffmpeg: Ignore SIGPIPE

Mark Thompson git at videolan.org
Fri Jan 26 01:02:21 EET 2018


ffmpeg | branch: master | Mark Thompson <sw at jkqxz.net> | Thu Jan 18 23:24:05 2018 +0000| [74cf4a75f74ee3d80d021fc50b05e38bff5940e3] | committer: Mark Thompson

ffmpeg: Ignore SIGPIPE

On systems which deliver SIGPIPE (Unices), a broken pipe will currently
result in the immediate termination of the ffmpeg process (the default
disposition as required by POSIX).  This is undesirable, because while
the broken pipe is likely fatal to useful cleanup of whatever component
is writing to it, there might be other components which can do useful
cleanup - for example, a muxer on another stream may still need to write
indexes to complete a file.  Therefore, set the signal disposition for
SIGPIPE to ignore the signal - the call which caused the signal will
fail with EPIPE and the error will be propagated upwards like any other
I/O failure on a single stream.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=74cf4a75f74ee3d80d021fc50b05e38bff5940e3
---

 fftools/ffmpeg.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 528849a2c6..918eb353aa 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -406,6 +406,9 @@ void term_init(void)
 #ifdef SIGXCPU
     signal(SIGXCPU, sigterm_handler);
 #endif
+#ifdef SIGPIPE
+    signal(SIGPIPE, SIG_IGN); /* Broken pipe (POSIX). */
+#endif
 #if HAVE_SETCONSOLECTRLHANDLER
     SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlHandler, TRUE);
 #endif



More information about the ffmpeg-cvslog mailing list