UNIXでのトレース – プログラミング – Home

通知
すべてクリア

[解決済] UNIXでのトレース


harupapa
 harupapa
(@harupapa)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

ANSI標準のC言語にてCLIのプログラムを作成しました。
これをUNIX系のOSで動作(それぞれのOSでmakeする)させて、UNIXのOSからkillコマン
ド?で停止させられた時、その状況を認識することはできるのでしょうか?


引用未解決
トピックタグ
しろーと
 しろーと
(@しろーと)
ゲスト
結合: 19年前
投稿: 20
 

>その状況を認識することはできるのでしょうか?
「誰が」その状況を認識する事を想定しているのでしょうか?


返信引用
harupapa
 harupapa
(@harupapa)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

言葉が足らずすみません。
停止させられた側のプログラムです。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

単純な疑問ですが、停止させられたプログラムは停止しているのにどうやって停止させられてる
ことを認識出来るんですか?
それとも「停止要求を受けたことを認識出来るか」ということ?


返信引用
harupapa
 harupapa
(@harupapa)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

いろいろ足らずすみません。
>「停止要求を受けたことを認識出来るか」
すみません。その通りです。
あと、認識だけではなくて、ファイルに書き込みも出来ると良いのですが。

MFC等を使用すると、システムからの終了(停止?)イベントを受け取る事が出来たと認
識しているのですが、MFCを使用せずにプログラムを記述した場合に、
「外部から停止処理をされた際に、自分で終了処理したのではなく外部から停止された
と言う記録をファイルに残したい。」
という事が出来ればと考えています。

プログラムはウォーターフォールと言うのでしょうか、始めから終わりまで途中分岐や
ループはありますけれども、最後まできたら終了するようになっています。
あと、期待通りのルートを通ってくれば、プログラムの戻り値として0を返し、その他の
ルートを通ってくれば、別の値を戻り値としています。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

っていうか CLI って何?俺が思っている CLI とは違う代物?
Command Line Interface のことかな?
Common Language Infrastracture のことかな?
前者であるとして

「停止」という文言で何を意図しているのか良くわからないけど
# 停止というからには再開があるわけで
unix で kill を実行したら通常 SIGTERM が送られるわけで、
それは停止と呼ぶよりもむしろ終了要求。これを受け取るためには
sigaction 関数や signal 関数を使えばいい。
受け取ってログを残して終了するも自由
受け取ってログを残して、でも要求を無視して処理を続けるも自由

SIGKILL は無条件で即時抹消なので終了処理も走らないからログを残すことは不可能


返信引用
harupapa
 harupapa
(@harupapa)
ゲスト
結合: 17年前
投稿: 4
Topic starter  

皆様ご回答いただきありがとうございます。
「停止」は「終了」の意味で使用してしまいました。

sigaction 関数を使用すれば、SIGTERM は受け取れると言うことで認識しました。
sigaction 関数をネットで調べてプログラムに組み込んでみます。

ありがとうございました。


返信引用
とおりすがり
 とおりすがり
(@とおりすがり)
ゲスト
結合: 23年前
投稿: 180
 

どこらへんがVC++の質問だったんだろう…


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました