From 74cf4a75f74ee3d80d021fc50b05e38bff5940e3 Mon Sep 17 00:00:00 2001 From: Mark Thompson Date: Thu, 18 Jan 2018 23:24:05 +0000 Subject: 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. --- fftools/ffmpeg.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'fftools') 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 -- cgit v1.2.3