繁体   English   中英

如何确保 posix c 套接字仍然有效

[英]How to ensure a posix c socket is still valid

我正在使用嵌入式 linux 内核 2.6 设备,需要知道以前建立的套接字是否仍然有效,而且我无法使用通常的发送函数执行此操作并检查返回值,因为如果我发送到无效的套接字描述符,我的应用程序将崩溃,Linux 将关闭我的进程。还有其他功能/建议吗?

编辑:设备中有一个已安装的应用程序管理器,当我尝试发送到不是引用打开的套接字的套接字描述符时,应用程序管理器将结束我的应用程序,然后如果我关闭套接字连接并尝试写入它,我的应用程序将被较低级别的应用程序管理器关闭。此外,我正在使用 TCP 套接字,WBr。

我认为这个问题要么是错误陈述的,要么是基于错误的前提。 通过另一个进程/主机的操作,套接字可能会异步地具有“无效”的感觉。 最接近的可能是套接字的另一端被关闭,这不会使您的套接字无效,但它确实会导致对您的套接字的后续写入导致EPIPE错误和SIGPIPE信号(如果未被阻塞)。 SIGPIPE反过来默认终止您的进程。 如果这是您的问题,避免它的最简单方法是使用sigprocmask / pthread_sigmask阻止SIGPIPE ,或使用signal(SIGPIPE, SIG_IGN)忽略它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM