#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
void sighandler(int signum)
{
printf("Process %d got signal %d\n", getpid(), signum);
signal(signum, SIG_DFL);
kill(getpid(), signum);
}
int main()
{
signal(SIGSEGV, sighandler);
printf("Process %d waits for someone to send it SIGSEGV\n",
getpid());
sleep(1000);
return 0;
}ulimit -c unlimited echo "0" > /proc/sys/kernel/core_uses_pid echo "core" > /proc/sys/kernel/core_pattern
$ ls sigs.c $ gcc sigs.c $ ./a.out Process 2149 waits for someone to send it SIGSEGV Process 2149 got signal 11 Segmentation fault (core dumped) $ ls a.out* core sigs.c
Reference:
http://www.alexonlinux.com/signal-handling-in-linux
http://www.alexonlinux.com/how-to-handle-sigsegv-but-also-generate-core-dump
http://aplawrence.com/Linux/limit_core_files.html
No comments:
Post a Comment