次の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
非同期シグナルセーフではありません。flock
そして、このリストには代替の async-signal-safe 関数が見つかりませんでした 。
上記のリンクによると:
シグナルが安全でない関数に割り込み、シグナルをキャッチする関数が安全でない関数を呼び出す場合、動作は未定義です。
flock
async-signal-safeにする方法はありますか? flock
または、信号を受信したときに実行する別のソリューションはありTERM
ますか?