C++ 后台进程 daemon
2023-09-11 14:17:24 时间
bool Switcher::Daemon() { base::YamlConfig config; if (!config_.ReadConfig(config_file_)) { fprintf(stderr, "read config file fail.\n"); return false; } bool is_daemon = config_.Get<bool>(kService, "is_daemon"); if (!is_daemon) { return true; } if (fork() != 0) { exit(0); } setsid(); if (fork() != 0) { exit(0); } close(0); close(1); close(2); open("/dev/null", O_RDWR); dup(0); dup(0); std::string stdout_log_path; if(config_.Get<std::string>(kService, kStdoutLogPath, &stdout_log_path)) { string filename = stdout_log_path + "." + DateString_(); int fd = open(filename.c_str(), O_WRONLY | O_APPEND | O_CREAT, 0644); if (fd != -1) { // 将STDOUT, STDERROR 重定向到文件 dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); close(fd); } } return true; }
相关文章
- C++ cout 进制输出
- C、C++混合调用——博客收藏
- C++中的endl搭配cout和cin用法
- C++中重写与覆写(虚函数virtual)的区别
- 使用C++访问OPC Server的简单方法
- 开源免费的C/C++网络库(c/c++ sockets library)补充
- 使用c++filt命令还原C++编译后的函数名
- 《C++多线程编程实战》——2.5 进程间通信(IPC)
- 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——2.1.4 读取和写入图像文件
- 基于C++实现(WinForm) LAN 的即时通信软件【100010228】
- C++中回调(CallBack)的使用方法(其实就是类方法指针,我觉得你的方法易用性不好,虽然原理正确)
- 【C++】内存分区&引用
- 跌倒检测和识别4:C++实现跌倒检测(含源码,可实时跌倒检测)
- C/C++ 中头文件相互包含引发的问题
- 【华为OD机试真题 java、python、c++】最大报酬(100%通过+复盘思路)
- C&C++控制结构实训(国防科大)
- 194、【动态规划】AcWing —— 291. 蒙德里安的梦想:状压dp详细解析(C++版本)
- 蓝桥杯练习题七 - 第几天(c++)
- C/C++ 全排列问题
- Windows下通过命令行编译C/C++程序