gpt4 book ai didi

c++ - 守护进程多线程服务器

转载 作者:行者123 更新时间:2023-11-30 17:56:55 25 4
gpt4 key购买 nike

我正在编写一个多线程 Web 服务器,它必须在守护进程模式下运行。我已经编写了代码,但在守护进程模式下运行时程序崩溃了。如果我不包含用于守护服务器的代码,则程序运行良好。谁能告诉我哪里出错了?

pid_t pid,cid;
pid = fork();
if(pid<0)
{
exit(EXIT_FAILURE);
}
if(pid>0)
{
exit(EXIT_SUCCESS);
}
umask(0);
cid=setsid();
std::cout<<"Process id after:"<<pid<<std::endl;
std::cout<<"Session id:"<<cid<<std::endl;
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);

pthread_t t1,t2;
pthread_t threads[threadnum];
pthread_attr_t attr;
if ((s = socket(AF_INET, soctype, 0)) < 0) {
perror("socket");
exit(1);
}
pthread_attr_init(&attr);
pthread_create(&t1,NULL,setup_server,NULL); // thread for accepting the requests
pthread_create(&t2,NULL,scheduler,NULL); // thread for scheduling the requests

最佳答案

以下代码行的目的是什么:

if(pid>0)
{
exit(EXIT_SUCCESS);
}

如果您需要子进程立即退出,那么根本不要 fork 您的程序。

此外,请发布函数 setup_server() 和 Scheduler() 以帮助您完成程序。

关于c++ - 守护进程多线程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com