• ベストアンサー

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

  • シャットダウンするときに

    友人のPCについてなんですが、 とても動作が遅いんです。 ネットをするにしてもファイルを開くにしても 起動したり、シャットダウンするときも遅いんです。 色々早くなるようなことを試してみたんですが 思うように早くなりません。 動画などが大量に保存されているとかそういうこともないです。 しかし、今一番気になっていることがあって シャットダウンするときに hkcmd.exe プログラムの終了中です お待ちください。 SMax4PNP プログラムの終了中です お待ちください。 TPSBattMWindow プログラムの終了中です お待ちください。 RAMAsst プログラムの終了中です お待ちください。 conime.exe プログラムの終了中です お待ちください。 ctfmon.exe プログラムの終了中です お待ちください。 とメッセージが続きます。 遅いのはこれらが原因なのかなーと思っていますが 対処法があれば教えてくださると助かります。 これらは一応 http://process.a-windows.com/ で調べてみました。

  • エクスプローラから開かれるWordを別プロセスにするには

    VC++2008にてプログラムを作成しています。 自作プログラム(疑似エクスプローラ)にて、 WordやExcelファイルをCreateProcessにて オープンし、WaitForSingleObjectにて ファイルが閉じられるまで待機。 ファイルが閉じられたら、終了処理という流れのシステムを 作成しています。 自作プログラムからオープンする際は、 Officeのコマンドラインオプションを用いて 別プロセスで起動するようにしていますので、 自作プログラムからWord(またはExcel)ファイルを 複数開いても、個別プロセスになるので、 各ファイルが個別に終了処理を行えるようになっています。 (なっていると思っていた) 問題は、自作プログラムからWord(a.doc)を開き、 エクスプローラから別ファイルのWord(b.doc)を開いた際、 b.docは個別にプロセスが作成されず、 a.docで作成した1プロセスにまとめられてしまうことです。 そのため、a.docを閉じても、b.docが開いている限り、 終了処理に移行しません。 APIフックにて、CreateProcessを引っ掛けてみたのですが、 エクスプローラからのファイルオープン時には 呼ばれていないようで、自作プログラム外で ファイルオープンをした際に、強制的に独自プロセスで 起動する方法が分りません。 自作プログラム起動時に限り、Word,Excelのファイルを 独自プロセスで開かせたいのですが、 解決方法はありますでしょうか? よろしくお願いします。

  • PCのシャットダウン

    昨日PCをシャットダウンする際に更新ファイルをインストール後に電源を切るとの表記が出たので、そのまま進みました。6項目の更新プログラムのダウンロードとインストールは完了したのですが、その後シャットダウンしていますの表記が出たままいつまでたっても終了になりません。昨晩はそのまま放置したのですが今朝になってもその状態のままです。 OKWEVEでの解答例を見て、スキャンディスクやデフラグ、不要なソフトやファイルのアンインストール等を試みようと思うのですが、それには一旦強制終了した後に再起動が必要と思います。電源ボタンの長押しで強制終了させて問題ないでしょうか? なおWindouwsは7(32bit)です。

  • 遠隔のPCがシャットダウンできなくなった

    今、実家に帰省中で、理由あって私の在住場所のPCを使わなければいけなくなりました。 WOLを使ってコンピュータを立ち上げ、更新プログラムを使用してでの更新シャットダウンを促されたので、シャットダウンアクションを実行したのですが、どうやら遠隔操作ツールを終了し、アプリケーション終了中にエラーが出てしまっているようで、こちらからシャットダウンができない状況になってしまっています。 Windowsに元から搭載されているリモートデスクトップも使用しましたが、繋がりません。 当方使用できるものとして ・VPN ・RealVNC ・リモートデスクトップ ・LINUX ・MAC とあるのですが、何かシャットダウンさせる方法はないでしょうか。 強制的な方法でも構いません。よろしくお願いします。

  • Linux mint17 シャットダウンできない!

    Linux mint17をUSBにインストールして、USB起動して使用しておりますが、突然、シャットダウンが出来なくなってしまいました。いつものように終了とすると、また、再起動してしまい、電源ボタンの長押しで強制終了するしかありません。 他にもこんな症状が出ています。 ・無線LANにつながらなくなった。ネットワーク設定もグレーアウトして、設定画面スラ見れず。  有線はOKです。 ・アップデートも出来ません。取りあえず、適用をしてもPWも聞かず、ダイアログが消えます。 ・外付けUSBやPCのHDDがマウントされず、中身が見れません。 こんなときはLinuxを入れ直した方が良いでしょうか。 ブラウザやメールは問題無く、動きます。 当方、Linux初心者のため、出来れば、再インストールは避けたいと思っています。 何か、良い方法がありましたら、教えてください。 宜しくお願いします。

  • シャットダウンが出来ない

    シャットダウンの画面で、1つのプログラムが機能しているので「TaskHostWindous」 終了できないと出る。」 キャンセルしても、強制終了しても電源が切れない。 Windous7です。 何のプログラムが稼動しているのでしょうか、 Roxio Bokoutrackをアンインストールしたが、途中迄で終了出来なかった事がある。

  • Operaがシャットダウン時に・・・

    Opera9.10を使用しています。 OSはwindowsXPです。 Operaを終了(右上×クリック)した後のシャットダウン時に「プログラムの終了-opera.exe」のダイアログが表示され、数秒後に「このプログラムは応答していません」とのメッセージが。 そして「すぐに終了」を選択すると、シャットダウンされます。 Operaを終了して、数分間を置いても同じ症状が出ます。 Operaを終了して、タアスクマネージャのプロセス一覧を見ると、Opera.exeが起動しています。ここでプロセスの終了をし、シャットダウンすると上記の様な症状は出ず、正常にシャットダウンされます。 どうしたらこのような症状を改善できますか? よろしくお願いします。

  • シャットダウンの画面で「シャットダウンしています...」とずーっとその

    シャットダウンの画面で「シャットダウンしています...」とずーっとその画面のままで、ただ青い○がグルグル回っています。強制終了の他になにか方法はありませんか?

  • シャットダウンに時間がかかるのを回避したい

    WIndowsXP Proを使用しています。 最近、シャットダウンをしても、プログラムが終了しています…という メッセージがずっと出て、シャットダウンに異様に時間がかかるようになりました。 たまに、応答しないになって、シャットダウンが終了せず、 仕方なく電源ボタンを押して強制終了してしまうこともあります。 しかし、あまり強制終了はよくないと思うので、なんとかこのような状態を回避したい のですが、どのようにすればよいでしょうか? どうぞよろしくお願い致します。

  • 通常のシャットダウンができません。

    通常のシャットダウンができなくなってしまいました。 スタート>終了オプション>シャットダウンの操作をすると、以下の通りになります。 “このプログラムを終了できません。操作の完了にもう少し時間がかかる場合があります。 Windowsに戻ってプログラムの状態を確認するには[キャンセル]をクリックしてください。 プログラムをここで終了した場合には、保存されていないデータが失われる可能性があります。プログラムを直ちに終了するには[すぐに終了]をクリックしてください” という表示が出ます。 その中にある「すぐに終了(E)」というボタンを押せば終了するのですが、普通にシャットダウンさせるにはどうしたら良いのでしょうか? PCは「NEC Value One」OS=XP、IE6を使用しております。 よろしくお願い申し上げます。