我正在编写一个客户端-服务器应用程序,其中客户端从服务器端获得一个确定的内存地址。
如果出现问题并且服务器需要重新启动,则客户端的地址将不再有效。当使用使用该无效信息的函数时,SIGSEGV 将被发送到服务器,因为地址可能不再是它的地址。
服务器如何保护自己不受 SIGSEGV 影响并继续接受连接并正常运行?发生这种情况时,有什么办法可以避免服务器崩溃吗?
非常感谢。
最佳答案
客户端不应该向服务器发送内存地址,句号。如果客户端需要对服务器资源的引用,服务器应为其提供某种句柄,服务器可以将其转换为地址,但不会直接取消引用。
在您的情况下,服务器重启可能导致客户端句柄无效。服务器应该注意到这一点,并向客户端返回一个易于理解的错误代码,告诉它获取新的资源句柄。
关于c - 你怎么能 "avoid"SIGSEGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510976/