[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