diff --git a/src/os/linux/inc/os.h b/src/os/linux/inc/os.h index 82cb439a94..e9f1737cd4 100644 --- a/src/os/linux/inc/os.h +++ b/src/os/linux/inc/os.h @@ -224,6 +224,7 @@ int64_t str2int64(char *str); void taosSetCoreDump(); +void taosBlockSIGPIPE(); #define BUILDIN_CLZL(val) __builtin_clzl(val) #define BUILDIN_CLZ(val) __builtin_clz(val) diff --git a/src/os/linux/src/tlinux.c b/src/os/linux/src/tlinux.c index 93ea014409..83782f4944 100644 --- a/src/os/linux/src/tlinux.c +++ b/src/os/linux/src/tlinux.c @@ -341,3 +341,13 @@ bool taosSkipSocketCheck() { return false; } + +void taosBlockSIGPIPE() { + sigset_t signal_mask; + sigemptyset(&signal_mask); + sigaddset(&signal_mask, SIGPIPE); + int rc = pthread_sigmask(SIG_BLOCK, &signal_mask, NULL); + if (rc != 0) { + pError("failed to block SIGPIPE"); + } +}