On 18/01/18 23:42, Mark Thompson wrote: > 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(+) > > 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 >
I'll apply this tomorrow if there are no further comments. Thanks, - Mark _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel