您好,我正在实现 TCP 服务器。请求是函数的名称。我需要执行运行服务器的某个库中存在的函数。库函数可能会导致段错误或浮点异常。我打算在一个单独的进程中实现函数调用操作。所以任何崩溃都会导致子进程死亡。
我的问题是在进程中执行这样的操作还是使用线程更好?
还有人请告诉我如何在崩溃时重新启动我的服务器应用程序。我写了 restart.conf 并保存在/etc/init/下,但它仅在系统重新启动时才重新启动,而不是在应用程序崩溃时重新启动。我不想在 do-while 中做这件事
最佳答案
大约 25 年前,当决定如何在 Web 服务器中实现 CGI 脚本时,提出了同样的设计问题。
当时的答案是为每个 cgi 脚本调用启动一个新进程。基本原理是一个有问题的 CGI 脚本不应该让整个网络服务器崩溃。
就性能而言,影响取决于您使用的操作系统。在基于 Linux/Unix 的系统(包括 mac/osx)中,创建一个新进程相当便宜,而在 Windows 中则相当昂贵。
如果您预计某些调用会使进程崩溃,那么您绝对应该为每个调用创建一个新进程。这样您的服务器将继续运行那些错误的调用。
关于c - 哪种是实现 TCP/UDP 服务器的最佳方式?在线程或进程中处理每个传入请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36566455/