Jac*_*Lee 3 c++ linux events daemon exception
我用C++编写了一个Linux守护进程.代码是这样的:
int main(int argc, char** argv)
{
daemon(1, 0); // Daemonize itself, retaining the current working directory and redirecting stdin, stdout and stderr to /dev/null.
// My program logic goes here
}
Run Code Online (Sandbox Code Playgroud)
问题是,我的程序逻辑偶尔抛出异常.如何捕获异常以便我可以知道哪里出错了?
我知道对于普通的控制台应用程序,未捕获的异常将被转储到控制台.在我的例子中,在调用守护进程(1,0)之后,控制台不再可访问.
在Windows上,操作系统将保存任何未捕获的异常,并可通过"计算机管理"中的"事件查看器"查看.Linux上是否有类似的机制?
你有两个解决方案:
一:你将对守护进程函数的调用改为
daemon(1,1);
Run Code Online (Sandbox Code Playgroud)
这将使程序仍然可以访问stdout,随后将保留将未捕获的异常转储到控制台的默认行为.
二:您不更改调用,但添加全局try { /* main code here */ } catch(...){ /* logging code here */ }以将任何未捕获的异常记录到文件中.
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |