如何使用c++代码设置核心文件名

How to set core file name using c++ code?

本文关键字:核心 文件名 设置 代码 何使用 c++      更新时间:2023-10-16

如何在linux下使用c++代码设置核心文件名?

Linux dump core file on binary crash,是否可以设置core dump file的文件名

在我的系统上(Ubuntu 10.04内核2.6.32),man core没有给出可以在逐个进程的基础上选择命名的指示。但是,可以通过修改/proc/sys/kernel/core_pattern:

来在系统范围内更改。

默认情况下,core转储文件命名为core,而core转储文件命名为core/proc/sys/kernel/core_pattern文件(从Linux 2.6和2.4.21开始)可以设置为定义用于命名核心转储文件的模板。的模板可以包含%说明符,这些说明符由创建核心文件时使用以下值:

   %%  a single % character
   %p  PID of dumped process
   %u  (numeric) real UID of dumped process
   %g  (numeric) real GID of dumped process
   %s  number of signal causing dump
   %t  time of dump, expressed as seconds since the Epoch (00:00h, 1 Jan 1970, UTC)
   %h  hostname (same as nodename returned by uname(2))
   %e  executable filename (without path prefix)
   %c  core file size soft resource limit of crashing process (since Linux 2.6.24)

模板末尾的单个%从核心中删除如%后跟任意字符的组合除了上面列出的。模板中的所有其他字符成为核心文件名的文字部分。模板可能包括'/'字符,这些字符被解释为分隔符目录名称。生成的核心文件名的最大大小128字节(2.6.19之前的内核为64字节)。默认值在这个文件中是"core"。为了向后兼容,如果/proc/sys/kernel/core_pattern不包括"%p"/proc/sys/kernel/core_uses_pid(见下文)非零,然后是.PID将被附加到核心文件名。

我相信这个页面大致描述了您正在寻找的内容。您可以通过更改proc文件系统中的魔法条目来设置核心文件的命名方式:

echo "pattern" > /proc/sys/kernel/core_pattern

其中pattern是类似printf的模式字符串,在链接页面上记录。从c++中执行此操作只需要使用常规机制打开和写入该文件。但是,你必须是root才能写core_pattern