- ベストアンサー
Linuxでシャットダウンの感知
Linuxでシャットダウンの感知 自作のデーモンを作っています, ファイルを操作するプログラムなのでファイルをオープンしたまま 強制的にプロセスが終了するとファイルが壊れるかもしれないので, シャットダウンを感知して,ファイルをクローズする仕組みを考えています. それは可能でしょうか? 宜しくお願いします.
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずSIGTERMを受け取れてるかどうかの確認でしょうか。 killでSIGTERMを投げてやって反応すればOKなはずです。 あと、ファイルは念のためにフルパスで書いておいたほうがいいかと。
その他の回答 (1)
- D-Matsu
- ベストアンサー率45% (1080/2394)
回答No.1
全プロセスに飛んでくるSIGTERMシグナルを適切に処理すればいいでしょう。
補足
このようなプログラムを書いたのですが, #include <signal.h> #include <stdio.h> #include <stdlib.h> void sigcatch(int); int main() { if (SIG_ERR == signal(SIGTERM, sigcatch)) { printf("failed to set signal handler.n"); exit(1); } while (1) { sleep(1); } return 0; } void sigcatch(int sig) { FILE *fp; fp = fopen("log", "a"); if (fp == NULL) { fprintf(stderr, "Error: Unable to open %s\n", "log"); exit(8); } fprintf(fp, "terminate!"); close(fp); printf("catch signal %dn", sig); exit(1); } logというファイルすら作成出来ていませんでした.