मैं निम्नलिखित कोड डिबगिंग हूँ:recvfrom() अलार्म के साथ टाइमआउट()
signal(SIGALRM, testt);
alarm(1);
result = recvfrom(listening_socket, buf, maxlen, 0, &from, &fromlen);
printf("stoped\n");
man 3 siginterrupt
ने वर्णन किया है अलार्म प्रणाली कॉल बीच में होना चाहिए, लेकिन मेरे मामले में ऐसा नहीं है। अलार्म हैंडलर का आह्वान किया जाता है, लेकिन recvfrom
बाधित नहीं होता है।
हालांकि, जब सिग्नल (2) फ़ंक्शन के साथ एक नया सिग्नल हैंडलर निर्दिष्ट किया जाता है, तो सिस्टम कॉल डिफ़ॉल्ट रूप से बाधित होती है।
अगर मैं अलार्म हैंडलर तो recvfrom
सेट करने के बाद siginterrupt(SIGALRM, 1);
जोड़ने की उम्मीद के रूप में बाधा आती है।
मुझे क्या याद आ रही है? मेरे कोड में क्या गलत है?
नोट्स: sigaction
के साथ बदलना मैं नहीं देख रहा हूं।
ध्यान दें कि 'siginterrupt (3) 'POSIX.1-2008 में अप्रचलित चिह्नित है। – ninjalj