Çekirdek dökümü oluşturmayı ancak daha sonra işlemden çıkmayı istemiyorum. İnmeye devam etmek için buna ihtiyacım yok, sadece ölme. Bu bir C++ Ubuntu işlemidir.Çekirdeği dökmek mümkün mü, süreçten çıkmak mümkün değil mi?
Çekirdeği oldukça standart bir şekilde döktüğüme inanıyorum: Sinyal işleyicisini sinyal() ile ayarlayarak rahatsız edici sinyali yakalarım, çekirdek boyutu limitini setrlimit() üzerinden ayarlıyorum ve sonra çekirdek dökümü sinyali ile() ve() yükseltmek: Ben çekirdek damping sonra süreç çıkış yok etmek yapabileceği bir şey
signal(SIGSEGV, OnPosixSignal);
...
void OnPosixSignal(int iSignal)
{
struct rlimit CoreLimit;
CoreLimit.rlim_cur = RLIM_INFINITY;
CoreLimit.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &CoreLimit);
signal(iSignal, SIG_DFL);
raise(iSignal);
}
var mı?
Şimdiden teşekkürler!
Bunu nasıl yaptığınıza bir göz attınız mı? –
Eşzamanlı olmayan işlevler listesinde 'setrlimit()' ı bulunamadı. Sinyal işleyicisine çağırmanın iyi bir fikir olduğuna emin misin? – EOF
'coredumper' kütüphanesi arkadaşınız olacak. –