gpt4 book ai didi

c++ - Linux 是否记录守护进程抛出的未捕获异常?

转载 作者:IT王子 更新时间:2023-10-29 00:58:21 31 4
gpt4 key购买 nike

我用 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
}

问题是,我的程序逻辑偶尔会抛出异常。我如何捕获异常以便知道哪里出了问题?

我知道对于一个普通的控制台应用程序,未捕获的异常将被转储到控制台。在我的例子中,在调用 daemon(1, 0) 之后,控制台不再可访问。

在 Windows 上,任何未捕获的异常都将由操作系统保存,并可以通过计算机管理中的事件查看器查看。 Linux 上有没有类似的机制?

最佳答案

您有两个解决方案:

  • 一:你把对守护函数的调用改成

    daemon(1,1);

    这将使程序仍然可以访问标准输出,随后将保留将未捕获的异常转储到控制台的默认行为。

  • 二:你不改变调用,但是你添加一个全局的try { /* main code here */ } catch(...){ /* logging code here */ }将任何未捕获的异常记录到文件中。

关于c++ - Linux 是否记录守护进程抛出的未捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13219105/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com