Jan*_*els 4 c linux segmentation-fault alarm
我正在编写一个客户端 - 服务器应用程序,其中客户端具有来自服务器端的确定的内存地址.
如果出现问题并且服务器需要重新启动,则客户端具有的地址不再有效.当使用使用该无效信息的函数时,SIGSEGV将被发送到服务器,因为地址可能不再是它的.
服务器如何保护自己免受SIGSEGV的影响并继续接受连接并正常运行?有没有办法在发生这种情况时不崩溃服务器?
非常感谢你.
JSB*_*ոգչ 12
客户端不应该向服务器发送内存地址.如果客户端需要对服务器资源的引用,则服务器应该为其提供某种句柄,服务器可以将其转换为地址,但不会直接取消引用.
在您的情况下,服务器重新启动可能使客户端的句柄无效.服务器应该注意到这一点,并向客户端返回一个易于理解的错误代码,告诉它获取新的资源句柄.