如何确保 posix c 套接字仍然有效
How to ensure a posix c socket is still valid
我在嵌入式 linux 内核 2.6 设备上工作,需要知道以前建立的套接字是否仍然有效,而且我不能用通常的发送函数来做这个并检查返回值,因为如果我发送到无效的套接字描述符,我的应用程序将崩溃并且 linux 将关闭我的 process.Is 还有其他 function/suggestion 吗?
编辑:
设备中安装了一个应用程序管理器,当我尝试发送到未引用打开的套接字的套接字描述符时,应用程序管理器将结束我的应用程序,然后如果我关闭套接字连接并尝试写入它,我的应用程序将被较低级别的应用程序关闭-manager.Also 我正在使用 TCP 套接字,WBr。
我认为这个问题要么陈述错误,要么基于错误的前提。没有意义 "invalidity" 套接字可以通过另一个 process/host 的操作异步拥有。最接近的可能是套接字的另一端被关闭,这 不会使您的套接字无效 ,但它确实会导致后续写入您的套接字导致 EPIPE
错误和 SIGPIPE
信号(如果未被阻止)。 SIGPIPE
依次默认终止您的进程。如果这是你的问题,避免它的最简单方法是使用 sigprocmask
/pthread_sigmask
阻止 SIGPIPE
,或者使用 signal(SIGPIPE, SIG_IGN)
.
忽略它
我在嵌入式 linux 内核 2.6 设备上工作,需要知道以前建立的套接字是否仍然有效,而且我不能用通常的发送函数来做这个并检查返回值,因为如果我发送到无效的套接字描述符,我的应用程序将崩溃并且 linux 将关闭我的 process.Is 还有其他 function/suggestion 吗?
编辑: 设备中安装了一个应用程序管理器,当我尝试发送到未引用打开的套接字的套接字描述符时,应用程序管理器将结束我的应用程序,然后如果我关闭套接字连接并尝试写入它,我的应用程序将被较低级别的应用程序关闭-manager.Also 我正在使用 TCP 套接字,WBr。
我认为这个问题要么陈述错误,要么基于错误的前提。没有意义 "invalidity" 套接字可以通过另一个 process/host 的操作异步拥有。最接近的可能是套接字的另一端被关闭,这 不会使您的套接字无效 ,但它确实会导致后续写入您的套接字导致 EPIPE
错误和 SIGPIPE
信号(如果未被阻止)。 SIGPIPE
依次默认终止您的进程。如果这是你的问题,避免它的最简单方法是使用 sigprocmask
/pthread_sigmask
阻止 SIGPIPE
,或者使用 signal(SIGPIPE, SIG_IGN)
.