【发布时间】:2011-12-10 15:03:07
【问题描述】:
我正在尝试在 Linux 上实现一个简单的 Web 服务器,它连接到客户端(浏览器),接收来自客户端的一些请求(例如 GET),然后用所需文件发回响应。我正在使用套接字通信。我想在服务器启动时创建一个工作进程(子)池,其工作是处理传入的请求。父进程必须 accept() 传入请求并将其文件描述符发送到其中一个工作进程以处理它,并将响应与请求的文件一起发送给客户端。
我遇到的问题是,当我accept()请求并将其发送到工作进程时,recv()或read()函数返回-1,这意味着发生错误:
非套接字上的套接字操作
但是当我尝试在父进程中使用recv() 或read() 函数时,它们工作得很好,并返回接收到的字节数。
我该如何解决这个问题?
PS:我正在使用共享内存将文件描述符从父进程传递给工作进程(子进程),并且我正在使用信号量来管理哪个工作进程将处理请求支持>
编辑:
实际上,这是一个项目分配,其中一个规范是通过共享内存发送文件描述符。但是,我可以发送文件描述符的指针吗?
【问题讨论】:
-
您可以使用关键字“Pre forked”找到更多信息。 Similar question