• ベストアンサー

シグナルのマスクについて

マスクされたシグナルはキューに溜まるものなのでしょうか、それとも破棄されるものでしょうか。 対象のシグナルはSIGALRMで、sigaction()で登録して, sighold()でブロックし、sigrelse()で解除しています。 マシンはSolaris8でC言語です。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

>マスクされたシグナルはキューに溜まるものなのでしょうか キューにたまります。但し、同一のシグナルが複数回発生した場合は、1回目のシグナルのみが、キューにたまり、残りは破棄されます。

bunarin
質問者

お礼

お礼が遅くなって申し訳ないです。 済みませんでした。 シグナルの発生した時間を見てみると確かに、マスク解除後に一回不定の時刻に来て、あとは定刻に来ているようです。納得です。ありがとうございました。 ちなみにSunOSでおなじような事をした場合には一回もたまらないようでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シグナルと例外の違い

    C言語ではシグナル、C++では例外という概念が存在しますが、 この2つに違いはあるのでしょうか? シグナルはシグナルハンドラで捕捉できるし、 例外もcatchして例外処理が可能ですし… どのような違いがあるか、お教えいただければ幸いです。

  • SIGALRMでプロセス終了

    SIGALRMが跳ねると登録してあるコールバック関数が呼ばれるのですが、その関数の処理後にプロセスが終了してしまいます。その理由が知りたいので教えてください。 実行してみると -------------------------------- callback_start .....コールバック関数のprint分を実行 callback_end .....コールバック関数のprint分を実行 アラームクロック -------------------------------- 3行目のメッセージがどこからか出力されます。 ちなみにdbxでコールバック関数を止めてみると 関数内の1行目でnextを実行すると -------------------------------- シグナル 14 (SIGALRM) で終了中 -------------------------------- と出力されます。 マシンはSolaris8でC言語です。 シグナルのマスク処理等はなにもなく、signal()関数が呼ばれているだけです。 よろしくお願いします。

  • ネットマスクを間違えたときどうなるのでしょうか

    .htaccessでdeny from 61.x.x.x/29とするべきところをdeny from 61.x.x.x/2 としてしまいました。64.0.0.0/2なら、64.0.0.0から127.255.255.255がブロック対象になると思いますが、61.x.x.x/2だとブロック対象範囲はどうなるのでしょうか?ネットマスクの解説を読みましたが、よくわかりませんでした。

  • JAVAで作成したプログラムは外部からの指示をどうやってうけとるのか?

    このたび、JAVAで、通信関連のプログラム(常駐)をつくることになりました。それで、このプロセスに対して外部からコマンド(終了の指示、何か処理をしなさい等)を発行したいのですが、そのインターフェースが判りません。 OSはSolaris又はLinuxを採用する予定です。C言語で作成した時は、メッセージキュー、シグナル等を使用していたのですが、100% pure JAVAの環境で、このような外部からコマンドを受け付ける仕組みは、作成できるのでしょうか。ご存じの方おりましたら、教えて下さい。

    • ベストアンサー
    • Java
  • サブネットマスクとセグメント

    あるサイトに・・・ 『ある範囲のIPアドレスをアドレス空間とよびます。  それをサブネット化(subnetting)によって分けたひとつひとつの  かたまりを、サブネットとよびます。  クラスCのアドレス空間から分割されたサブネットは、それぞれ別の  アドレス空間をもつことになります、そしてそのひとかたまりをアドレスブロックとよびます。  似ているので、セグメントと間違うひとも多いかもしれません・・・』  と、ありました。 私は、サブネットマスクでセグメントを分けると理解しているのですが 誤っていますか? クラスCだけはアドレスブロックと言うのですか? 教えて下さい(>_<)

  • IPアドレス、サブネットマスク取得について

    はじめまして、C言語によるネットワークプログラミングについてお聞きしたいことがあります。 windowsでc言語を使用し自分のIPアドレス・サブネットマスクを取得し、コンソール画面表示するプログラムを作りたいのです。unix系のosではなくても可能でしょうか?ご存知であればソースを載せて頂けると大変助かります。 また、自分はc言語はまだ初心者の域をでていないのでネットワークプログラミングに関する書籍等も教えていただければ幸いです。重ね重ね申し訳ありませんが、よろしくお願いします。

  • cron起動ができなくなりました。

     Solaris8のマシンを正常にシャットダウンをせず、いきなり電源を切断してしまいました。それ以降、クーロンに登録されていたアプリケーションが動かなくなり、困っています。  /var/cron/logには以下のようにメッセージが記録されています。  1.この137とは何を意味するのでしょうか?  2.また教えてgoo以外でもUNIX関係の、このような「教えて」サイトがありましたらご紹介いただけませんか。 よろしくお願い致します。 > CMD: /c言語で作った実行モジュール名 > /dev/console > root 3803 c (木) 1月 12 15:05:00 2006 < root 3803 c (木) 1月 12 15:05:00 2006 rc=137

  • C言語の実行モジュール、コンパイル

    2点程、教えて頂きたい事があります。 よろしくお願いします。 (1)Solaris9でC言語でコンパイルされた実行モジュールを、そのままSolaris10にコピーし実行した場合、実行できるのでしょうか? (2)Solaris10で、makefile等を利用しC言語のコンパイルをしようと思うのですが、Solaris10がインストールされた段階で既にコンパイルする環境は整っているのでしょうか?。それともCD等からコンパイル環境をインストールしないといけないのでしょうか?(Solarisメディアが無い場合にコンパイル可能でしょうか?)

  • Ctrl + BS ?

    Solaris10をx86マシンで使用しています。 java desktopを使っているのですが、 ctrl+BSキーを押すと、有無を言わせず強制ログアウトされてしまって 困っています。 1,本来、こういう機能ってついているものですか? 2,どのようにしたら解除できますか?   [起動]ー>[設定]ー>[デスクトップの設定]ー>[キーボード] ー>[ショートカット]   には、そのようなキーの組み合わせは登録されていません。 宜しくお願いします。

  • Redhadでのネットワーク設定ファイル

    以前はsolarisを使用していたのですが、 Redhatでは以下の設定はなんというファイルで行うのでしょうか? (1)マシン名(solarisでの/etc/hostname.bge0) (2)ログイン画面に表示される名前(solarisでの/etc/nodename (3)IPアドレス(solarisの/etc/hosts) (4)ルータ(solarisでの/etc/defaultrouter) (5)ネットマスク(solarisの/etc/netmasks) (6)nfs許可(solarisでの/etc/dfs/dfstab)