c++守护进程服务器停止
c++ daemon server stops
我有一个用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个请求时,它就会停止。
我相信作为deamon运行程序的代码是正确的。我担心的是我的实际代码。有什么规则我必须遵守吗?有什么我应该避免的不良行为吗?任何守护进程不允许的命令,比如命令行输出(我现在做了很多)等等。?
只需关闭stdout
和stderr
,所有对它们的写入都将失败。我猜你的程序遇到了这样一个错误,检测到它并终止。标准技术是将/dev/null
和dup2(2)
打开为STDOUT_FILENO
、STDERR_FILENO
和STDIN_FILENO
。
相关文章:
- 使用 CommonAPI 编写服务器时C++服务器进程中创建了多少个线程?
- COM 客户端连接 COM 服务器所需的文件是什么(进程外方案)
- 为什么我的 Redhat 服务器上的 QuickFIX 进程没有将其核心文件写入应有的位置?
- Ubuntu 服务器管道在第一次退出时停止进程终止
- Nodejs服务器将数据发送到C 进程
- 服务器进程等待客户端输入/消息的最佳方法是什么?
- 分叉进程不断侦听服务器的端口
- 耗尽流程com服务器 - 每个呼叫过程一个服务器进程
- Unix域套接字(C++)-客户端使服务器守护进程崩溃
- Reg Free进程外COM服务器事件
- C++ System V 信号量:多个服务器进程,一个客户端进程
- 如何在 ATL COM+ 进程外服务器应用程序中标识调用方的进程?
- 具有进程间通信功能的服务器-客户端日志记录体系结构.你知道解决方案吗?
- 从服务器套接字创建守护进程处理
- C++ 服务器在客户端上终止连接进程后不会关闭 TCP 套接字连接
- 在服务器上执行守护进程
- r语言 - 如何直接在数据库服务器上运行C++进程以避免传输数据集
- 具有多个客户端的套接字服务器.杀死子进程
- c++守护进程服务器停止
- 我不希望一个作为守护进程的服务器进程关闭——即使在收到终止信号时也是如此.有什么办法可以确保这一点吗