Как я могу сбросить ядро, когда моя программа получает сигнал SIGSEGV? (Сервер, на котором запущена моя программа, имеет очень ограниченные разрешения, и поэтому дамп ядра по умолчанию отключен.)
Я написал следующее, используя gcore, но вместо этого я хотел бы использовать функции C. Можно ли как-нибудь поймать ядро и записать его в папку где-нибудь?
void segfaulthandler(int parameter)
{
char gcore[50];
sprintf(gcore, "gcore -s -c \"core\" %u", getpid());
system(gcore);
exit(1);
}
int main(void)
{
signal(SIGSEGV, segfaulthandler);
}