[FFmpeg-devel] [PATCH] ffmpeg: Ignore SIGPIPE
Mark Thompson
sw at jkqxz.net
Sun Jan 21 02:54:52 EET 2018
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
More information about the ffmpeg-devel
mailing list