Commit 6b7e4f5f by xiongziliang

修复子进程日志路径固定的问题

parent 9c646d13
...@@ -70,6 +70,11 @@ void Process::run(const string &cmd, const string &log_file_tmp) { ...@@ -70,6 +70,11 @@ void Process::run(const string &cmd, const string &log_file_tmp) {
} }
fclose(fp); fclose(fp);
#else #else
_pid = fork();
if (_pid < 0) {
throw std::runtime_error(StrPrinter << "fork child process failed,err:" << get_uv_errmsg());
}
if (_pid == 0) {
string log_file; string log_file;
if (log_file_tmp.empty()) { if (log_file_tmp.empty()) {
//未指定子进程日志文件时,重定向至/dev/null //未指定子进程日志文件时,重定向至/dev/null
...@@ -77,12 +82,6 @@ void Process::run(const string &cmd, const string &log_file_tmp) { ...@@ -77,12 +82,6 @@ void Process::run(const string &cmd, const string &log_file_tmp) {
} else { } else {
log_file = StrPrinter << log_file_tmp << "." << getpid(); log_file = StrPrinter << log_file_tmp << "." << getpid();
} }
_pid = fork();
if (_pid < 0) {
throw std::runtime_error(StrPrinter << "fork child process failed,err:" << get_uv_errmsg());
}
if (_pid == 0) {
//子进程关闭core文件生成 //子进程关闭core文件生成
struct rlimit rlim = {0, 0}; struct rlimit rlim = {0, 0};
setrlimit(RLIMIT_CORE, &rlim); setrlimit(RLIMIT_CORE, &rlim);
...@@ -132,6 +131,13 @@ void Process::run(const string &cmd, const string &log_file_tmp) { ...@@ -132,6 +131,13 @@ void Process::run(const string &cmd, const string &log_file_tmp) {
exit(ret); exit(ret);
} }
string log_file;
if (log_file_tmp.empty()) {
//未指定子进程日志文件时,重定向至/dev/null
log_file = "/dev/null";
} else {
log_file = StrPrinter << log_file_tmp << "." << _pid;
}
InfoL << "start child process " << _pid << ", log file:" << log_file; InfoL << "start child process " << _pid << ", log file:" << log_file;
#endif // _WIN32 #endif // _WIN32
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论