Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   core    ( 5 )

файл дампа ядра (core dump file)

  Name  |  Description  |  Note  |    Examples    |  See also  |

Примеры (Examples)

The program below can be used to demonstrate the use of the pipe
       syntax in the /proc/sys/kernel/core_pattern file.  The following
       shell session demonstrates the use of this program (compiled to
       create an executable named core_pattern_pipe_test):

$ cc -o core_pattern_pipe_test core_pattern_pipe_test.c $ su Password: # echo "|$PWD/core_pattern_pipe_test %p UID=%u GID=%g sig=%s" > \ /proc/sys/kernel/core_pattern # exit $ sleep 100 ^\ # type control-backslash Quit (core dumped) $ cat core.info argc=5 argc[0]=</home/mtk/core_pattern_pipe_test> argc[1]=<20575> argc[2]=<UID=1000> argc[3]=<GID=100> argc[4]=<sig=3> Total bytes in core dump: 282624

Program source

/* core_pattern_pipe_test.c */

#define _GNU_SOURCE #include <sys/stat.h> #include <fcntl.h> #include <limits.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h>

#define BUF_SIZE 1024

int main(int argc, char *argv[]) { ssize_t nread, tot; char buf[BUF_SIZE]; FILE *fp; char cwd[PATH_MAX];

/* Change our current working directory to that of the crashing process. */

snprintf(cwd, PATH_MAX, "/proc/%s/cwd", argv[1]); chdir(cwd);

/* Write output to file "core.info" in that directory. */

fp = fopen("core.info", "w+"); if (fp == NULL) exit(EXIT_FAILURE);

/* Display command-line arguments given to core_pattern pipe program. */

fprintf(fp, "argc=%d\n", argc); for (int j = 0; j < argc; j++) fprintf(fp, "argc[%d]=<%s>\n", j, argv[j]);

/* Count bytes in standard input (the core dump). */

tot = 0; while ((nread = read(STDIN_FILENO, buf, BUF_SIZE)) > 0) tot += nread; fprintf(fp, "Total bytes in core dump: %zd\n", tot);

fclose(fp); exit(EXIT_SUCCESS); }