@@ -52,7 +52,7 @@ extern void SayBye();
5252extern std::function<void ()> error_exit_func;
5353
5454namespace {
55- void RunInFrontend (ContextImp &ctx, Module &apps, int loop_exit_wait )
55+ void RunInFrontend (ContextImp &ctx, Module &apps, int exit_wait_sec )
5656{
5757 auto stop_signal = ctx.loop ()->newSignalEvent (" main::RunInFrontend::stop_signal" );
5858 auto warn_signal = ctx.loop ()->newSignalEvent (" main::RunInFrontend::warn_signal" );
@@ -71,8 +71,8 @@ void RunInFrontend(ContextImp &ctx, Module &apps, int loop_exit_wait)
7171 LogImportant (" Got signal %d, stop" , signo);
7272 apps.stop ();
7373 ctx.stop ();
74- ctx.loop ()->exitLoop (std::chrono::seconds (loop_exit_wait ));
75- LogDbg (" Loop will exit after %d sec" , loop_exit_wait );
74+ ctx.loop ()->exitLoop (std::chrono::seconds (exit_wait_sec ));
75+ LogDbg (" Loop will exit after %d sec" , exit_wait_sec );
7676 }
7777 );
7878
@@ -131,11 +131,11 @@ int Main(int argc, char **argv)
131131 }
132132 }
133133
134- int loop_exit_wait = 1 ;
135- util::json::GetField (js_conf, " loop_exit_wait " , loop_exit_wait );
134+ int exit_wait_sec = 1 ;
135+ util::json::GetField (js_conf, " exit_wait_sec " , exit_wait_sec );
136136
137- bool error_exit_wait = false ;
138- util::json::GetField (js_conf, " error_exit_wait " , error_exit_wait);
137+ bool is_fault_hup = false ;
138+ util::json::GetField (js_conf, " is_fault_hup " , is_fault_hup); // ! 出现错误的时候是否需要挂起
139139
140140 trace.initialize (ctx, js_conf);
141141 log.initialize (argv[0 ], ctx, js_conf);
@@ -145,17 +145,20 @@ int Main(int argc, char **argv)
145145
146146 // ! 注册异常退出时的动作,在异常信号触发时调用
147147 error_exit_func = [&] {
148+ if (is_fault_hup)
149+ LogNotice (" process is hup." );
150+
148151 // ! 主要是保存日志
149152 log.cleanup ();
150153
151- while (error_exit_wait )
154+ while (is_fault_hup )
152155 std::this_thread::sleep_for (std::chrono::seconds (1 ));
153156 };
154157
155158 if (ctx.initialize (argv[0 ], js_conf)) {
156159 if (apps.initialize (js_conf)) {
157160 if (ctx.start () && apps.start ()) { // ! 启动所有应用
158- RunInFrontend (ctx, apps, loop_exit_wait );
161+ RunInFrontend (ctx, apps, exit_wait_sec );
159162 } else {
160163 LogErr (" Apps start fail" );
161164 }
0 commit comments