मैं निम्नलिखित sigaction
हैंडलर समारोहफ़ंक्शन एसिंक-सिग्नल-सुरक्षित कैसे करें?
void signal_term_handler(int sig)
{
printf("EXIT :TERM signal Received!\n");
int rc = flock(pid_file, LOCK_UN | LOCK_NB);
if(rc) {
char *piderr = "PID file unlock failed!";
fprintf(stderr, "%s\n", piderr);
printf(piderr);
}
abort();
}
किसी ने मुझसे कहा था कि flock
और printf
async-संकेत सुरक्षित नहीं हैं। और मुझे list में flock
के लिए वैकल्पिक एसिंक-सिग्नल-सुरक्षित फ़ंक्शन नहीं मिला।
और ऊपर के लिंक के अनुसार:
जब एक संकेत एक असुरक्षित समारोह और संकेत को पकड़ने समारोह एक असुरक्षित फ़ंक्शन को कॉल बीच, व्यवहार अपरिभाषित है
वहाँ एक रास्ता है flock
async-signal-safe बनाने के लिए? या सिग्नल प्राप्त करते समय flock
निष्पादित करने का कोई और समाधान है?
संभावित डुप्लिकेट [सिग्नल हैंडलर में printf का उपयोग करने से कैसे बचें?] (Https://stackoverflow.com/questions/16891019/how-to-avoid-using-printf-in-a-signal-handler) के लिए 'printf', https://stackoverflow.com/questions/16979059/use-flock-in-the-sigaction-handler 'flock' के लिए। –