我,我正在使用嵌入式Linux内核2.6设备并且需要知道先前建立的套接字是否仍然有效,而且我不能用通常的发送功能执行此操作并检查返回的值,因为如果我发送到无效的套接字描述符,我的应用程序将崩溃,Linux将关闭我的进程。是否有任何其他功能/建议?
编辑: 设备中有一个已安装的应用程序管理器,当我尝试发送到未引用打开套接字的套接字描述符时,应用程序管理器将结束我的应用程序,然后如果我关闭套接字连接并尝试写入它,我的应用程序将由较低级别的app-manager关闭。我也使用TCP套接字,WBr。
答案 0 :(得分:4)
我认为这个问题要么是错误的,要么是基于错误的前提。套接字可以通过另一个进程/主机的操作异步地产生“无效”感。最接近的可能是套接字的另一端被关闭,不会使您的套接字无效,但它会导致后续写入套接字导致EPIPE
错误并{{{ 1}}信号,如果没有阻止。 SIGPIPE
默认会终止您的流程。如果这是您的问题,最简单的方法是使用SIGPIPE
/ SIGPIPE
屏蔽sigprocmask
,或使用pthread_sigmask
忽略它。