pthread: एसआईजीएसईजीवी हैंडलर चलते समय अन्य धागे बंद करो?

मैं सोलारिस 10 पर एक कार्यक्रम विकसित करता हूं। मैं इसे क्रैश पर स्टैक ट्रेस प्रिंट करना चाहता हूं। मुझे यह उदाहरण मिला:

static void pstack()
{
  char buf[256];

  sprintf(buf, "/usr/proc/bin/pstack %d |/bin/tee traceback.txt\n", (int)getpid());
  /* undefine LD_PRELOAD to avoid 64-bit problems */
  (void)putenv("LD_PRELOAD=");
  system(buf);
}
void sighanterm(int signo, siginfo_t *info, void *context) {
    ...
    pstack();
}

दिलचस्प बात यह है: जबकि /usr/proc/bin/pstack निष्पादित करता है, अन्य थ्रेड भी उनके आउटपुट को प्रिंट करते रहते हैं। क्या थ्रेड फिर से शुरू होते हैं जब system() को कॉल किया जाता है या वे बिल्कुल नहीं रुकते हैं? क्या मैं उन्हें हैंडलर में स्पष्ट रूप से रोक सकता हूं?

0
जोड़ा संपादित
विचारों: 1
खैर, मेरे पास इसका समर्थन करने के लिए कुछ भी नहीं है, लेकिन मुझे लगता है कि डिफ़ॉल्ट हैंडलर उन्हें मारता है लेकिन जब आप अपना खुद का हैंडलर प्रदान करते हैं (जैसा कि आपको लगता है) वे तब तक रुक गए या मारे गए जब तक कि आप इसे स्वयं नहीं करते।
जोड़ा लेखक Kevin, स्रोत

1 उत्तर

नहीं, एक संभाल <�कोड> SIGSEGV किसी भी अन्य धागे को प्रभावित नहीं करता है (हालांकि अगर यह स्मृति भ्रष्टाचार या अन्य यूबी से हुआ है, तो यूबी निश्चित रूप से अन्य धागे को प्रभावित कर सकता है)। दूसरी ओर एक अनचाहे <�कोड> SIGSEGV पूरी प्रक्रिया को समाप्त करता है।

0
जोड़ा