我试图实现一个在自己的线程中运行的服务器。 稍后,服务器应该与另一个线程一起工作。 这甚至可能吗?
我目前尝试实现此目的:
主
df1 <- structure(list(ID = c(60842L, 90853L, 90854L, 83907L, 83908L,
83909L), EMAIL_ID.x = c("k@aol.com", "a.b.c", "b.c.d", "h@gwi.net",
"s@hotmail.com", "l@rediff.com"), JPNUMBER.y = c(60842L, NA,
NA, 2854L, 952L, 78895L), EMAIL_ID.y = c("k@aol.com", NA, NA,
NA, NA, NA)), .Names = c("ID", "EMAIL_ID.x", "JPNUMBER.y", "EMAIL_ID.y"
), row.names = c(NA, -6L), class = "data.frame")
Server.h
#include "EtherServer.h"
int main(int argc, char *argv[])
{
EtherServer* es = new EtherServer();
es->init();
return 0;
}
Server.cpp
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>
#include <pthread.h>
#ifndef ETHERSERVER_H_
#define ETHERSERVER_H_
class EtherServer
{
public:
bool init();
static void* runServer(void *arg);
static void sigchld_handler(int s);
static void* get_in_addr(struct sockaddr *sa);
static int s_sockfd;
private:
};
#endif /* ETHERSERVER_H_ */
答案 0 :(得分:1)
您的主题作为main()的子主体运行。当你从main返回时,它的子线程也会被杀死。
不是返回,而是main必须执行它自己的一些等待操作,这样它才会在所有子线程完成时干净地退出。