c - 如何捕获已收到 SIGSEGV 的进程列表

标签 c linux signals

我的应用程序的一部分(最好是守护程序)需要记录已进行核心转储的进程名称列表。如果有人指出我可以使用哪种机制,那就太好了?

最佳答案

如果进程确实在转储核心,您可以使用以下技巧:

/proc/sys/kernel/core_pattern设置为|/absolute/path/to/some/program %p %e

这将导致系统执行您的程序(使用错误进程的 pid 和可执行文件名称),并将核心转储通过管道传输到其标准输入中。然后您可以记录并存储核心转储文件。

请注意,该程序将作为用户和组 root

运行

参见 man 5 core获取更多信息,以及示例核心转储处理程序

关于c - 如何捕获已收到 SIGSEGV 的进程列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7487814/

相关文章:

linux - 无法在正在运行的 JBoss 进程上出现 "strace -p"

linux - 如何在不退出 vim 编辑器的情况下切换到终端窗口

c - C语言中启动多个定时器并知道哪一个已经结束

c - child 收到 sigstop 后 wait() 不返回

linux - 无法让 setenv 在 .htaccess 中工作

c - 在 Linux 上处理多线程断管情况的服务器端套接字最佳实践是什么?

c - 使用指针交换

c - 如何将 char[n][length+1] 转换为 C 中的常量字符串数组?

c - 从 C 库头自动生成 Fortran 2003 绑定(bind)(使用 iso_c_bindings 内部模块)

c - 使用 C 中的随机源端口打开从客户端到服务器的多个 TCP 连接