Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保posix c套接字仍然有效_C_Linux_Sockets_Posix - Fatal编程技术网

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

如何确保posix c套接字仍然有效,c,linux,sockets,posix,C,Linux,Sockets,Posix,一、 我在一个嵌入式linux内核2.6设备上工作,需要知道以前建立的套接字是否仍然有效,我也不能用通常的send函数来做这件事并检查返回值,因为如果我发送到无效的套接字描述符,我的应用程序将崩溃,linux将关闭我的进程。是否有其他功能/建议 编辑: 设备中安装了应用程序管理器,当我尝试发送到未引用打开的套接字的套接字描述符时,应用程序管理器将结束我的应用程序,然后如果我关闭套接字连接并尝试写入,我的应用程序将被较低级别的应用程序管理器关闭。此外,我正在使用TCP套接字,WBr.我认为这个问题

一、 我在一个嵌入式linux内核2.6设备上工作,需要知道以前建立的套接字是否仍然有效,我也不能用通常的send函数来做这件事并检查返回值,因为如果我发送到无效的套接字描述符,我的应用程序将崩溃,linux将关闭我的进程。是否有其他功能/建议

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

我认为这个问题要么陈述错误,要么基于错误的前提。套接字通过另一个进程/主机的操作异步产生的无效感是不存在的。最接近的可能是正在关闭的套接字的另一端,这不会使套接字无效,但会导致后续对套接字的写入导致EPIPE错误,如果未被阻止,则会发出SIGPIPE信号。默认情况下,SIGPIPE会终止您的进程。如果这是您的问题,最简单的避免方法是使用sigprocmask/pthread\u sigmask阻止SIGPIPE,或者使用signalSIGPIPE、SIG\u IGN忽略它。

您认为仍然有效是什么意思?另外,您指的是哪种插座?本地,TCP还是UDP?请澄清您的问题。另外,如果使用无效套接字发送,为什么您的应用程序会崩溃?您的应用程序不会崩溃,除非您编写了导致其崩溃的内容。请为您的问题使用新行和正确的格式。当它看起来像一堵信墙的时候,读起来非常困难。如果我合上一个插座并尝试向它写东西,这与插座的另一端合上完全不同。如果您关闭套接字的一端,然后尝试写入现在无效的文件描述符,这是您的错误-这是代码中的逻辑错误。不要这样做。