• ベストアンサー

Linuxでシャットダウンの感知

Linuxでシャットダウンの感知 自作のデーモンを作っています, ファイルを操作するプログラムなのでファイルをオープンしたまま 強制的にプロセスが終了するとファイルが壊れるかもしれないので, シャットダウンを感知して,ファイルをクローズする仕組みを考えています. それは可能でしょうか? 宜しくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

とりあえずSIGTERMを受け取れてるかどうかの確認でしょうか。 killでSIGTERMを投げてやって反応すればOKなはずです。 あと、ファイルは念のためにフルパスで書いておいたほうがいいかと。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

全プロセスに飛んでくるSIGTERMシグナルを適切に処理すればいいでしょう。

参考URL:
http://www.linux.or.jp/JM/html/SysVinit/man8/shutdown.8.html
penpower
質問者

補足

このようなプログラムを書いたのですが, #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というファイルすら作成出来ていませんでした.

関連するQ&A