15.6 open服务器第2版在1 5 . 4节中,客户机调用f o r k和e x e c构造了一个o p e n服务器,它说明了如何从子程序向父程序传送文件描述符。本节将开发一个精灵进程样式的o p e n服务器。一个服务器处理所有客户机的请求。由于避免使用了f o r k和e x e c,我们期望这一设计会更有效的。在客户机和服务器之间仍将使用上一节说明的三个函数: s e r v _ l i s t e n、s e r v _ a c c e p t和c l i _ c o n n。这一服务器将表明:一个服务器可以处理多个客户机,为此使用的技术是1 2 . 5节中说明的s e l e c t和p o l l函数。
本节所述的客户机类似于1 5 . 4节中的客户机。确实,文件m a i n . c是完全相同的(见程序1 5 - 1 2)。在o p e n . h头文件(见程序1 5 - 11)中则加了下面1行: #define CS_OPEN \"/home/stevens/open\" / server's well-known name /因为在这里调用的是c l i _ c o n n而非f o r k和e x e c,所以文件o p e n . c与程序1 5 - 1 3完全不同。这示于程序1 5 - 2 5中。
对于精灵进程的详细实现,可以参考以下链接,这些资源将提供更多关于UNIX环境高级编程和客户机服务器模型的深入理解:
暂无评论