因为我目前只在C中使用this project,所以直到现在,我才使用我的web服务器作为单线程应用程序。但是,我不想再这样了!所以我有以下代码来处理我的工作。转换为多线程套接字应用程序
void BeginListen()
{
CreateSocket();
BindSocket();
ListenOnSocket();
while (1)
{
ProcessConnections();
}
}
现在我的ProcessConnection();
开始其helpes我允许多个连接前加入fork();
!但是,当我添加用于守护发现在this answer中的应用程序的代码时。我已经列举了一个小问题,使用fork()
将创建我整个运行应用程序的副本,这是fork()
的目的。所以,我想解决这个问题。
我ProcessConnection()
看起来像这样
void ProcessConnections()
{
fork();
addr_size = sizeof(connector);
connecting_socket = accept(current_socket, (struct sockaddr *)&connector, &addr_size);
if (connecting_socket < 0)
{
perror("Accepting sockets");
exit(-1);
}
HandleCurrentConnection(connecting_socket);
DisposeCurrentConnection();
}
我怎么会做只是简单地添加几个上面或connecting=socket = accept
后的行...为了使其接受当时不止一个连接?我可以使用fork();
,但是当它归结为DisposeCurrentConnection();
我想杀死该进程并且只运行父线程。
这个问题是不是真的做线程 - 因为你用叉子,它是一个多进程的Web服务器,而不是多线程的。 – frankodwyer 2009-01-11 19:36:20
@frankodwyer,我很高兴看到pthreads上的教程或例子,fork只是一个例子。 – 2009-01-11 19:37:58