gpt4 book ai didi

C++守护进程服务器停止

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:35 24 4
gpt4 key购买 nike

我有一个用 C++ 编写的服务器程序,用于管理用户浏览器和硬件设备之间的流量。该服务器在我的 centos 机器上运行。当我正常运行该程序时,它运行没有任何问题。

但是尝试将程序作为守护进程运行会带来一些问题。这是我的守护进程代码:

pid_t pid, sid;

pid = fork();
if(pid < 0){
exit(EXIT_FAILURE);
}

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

umask(0);

sid = setsid();
if(sid < 0){
exit(EXIT_FAILURE);
}

if((chdir("/")) < 0){
exit(EXIT_FAILURE);
}

close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);

while(1){
//my program here
}

程序启动正常,它的父进程是 init。它可以运行几个小时,但当我发出大约 10 - 15 个请求时,它就会停止。

我相信作为守护进程运行我的程序的代码是正确的。我担心的是我的实际代码。有什么我必须遵守的规则吗?我应该避免哪些不良行为?守护进程不允许使用任何命令,例如命令行输出(我现在经常这样做)等?

最佳答案

简单地关闭 stdoutstderr 将使对这些的所有写入失败。我猜你的程序遇到了这样的错误,检测到它并终止。标准技术是将 /dev/nulldup2(2) 打开为 STDOUT_FILENOSTDERR_FILENOSTDIN_FILENO

关于C++守护进程服务器停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18373072/

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