タグ

シグナルに関するiwwのブックマーク (31)

  • ファイルディスクリプタについて(3) ~タイマー用ディスクリプタ「timerfd」の特徴

    ファイルディスクリプタは、プログラムの外部との入出力を行う抽象的なインタフェースです。Unix/Linuxのファイルディスクリプタは、一般的なファイルだけでなくデバイスやソケットやパイプも対象としています。当連載は、ファイルディスクリプタの機能や管理方法などを提示します。第3回は、設定時間をファイルディスクリプタ経由で通知する「timerfd」を紹介します。 はじめに 前回は、イベント用ファイルディスクリプタ「eventfd」の使用法や特徴を説明しました。今回は、時間を通知するファイルディスクリプタ「timefd」について解説していきたいと思います。 連載概要 この連載は、次のような内容について述べていく予定です。 連載目次 第1回:ディスクリプタの概要 第2回:イベント用ディスクリプタ「eventfd」の特徴 第3回:タイマー用ディスクリプタ「timerfd」の特徴 第4回:シグナル用デ

    ファイルディスクリプタについて(3) ~タイマー用ディスクリプタ「timerfd」の特徴
  • kill -9 ラップ:Geekなぺーじ

    演奏開始 サビがカッコイイ kill -9 !!! kill -9 , no more CPU time, cause it's kill -9, and your process is mine, kill -9, it's my time to shine, don't step out the line, or I'll just kill -9 途中の内容 聞き取れなかったり、意味が理解できなかった部分は省略しています。 (終わってみると、4分の曲を聴くのに2時間近くかけている自分が阿呆に思えてきました。。。) 気合がある方は全部把握してみると楽しいかも知れません。 お前のクソプロセスにSIGQUITを試したけどダメだった。 今度は kill -9 をやってやる。 自分のスレッドが止まるべき時を把握しておけ。 お前のプロセスなんか同意を得ずにrun queueから外してやる。 お前

  • 技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他) - Glamenv-Septzen.net

    ホーム 検索 - ログイン | |  ヘルプ 技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他) [ Prev ] [ Next ] [ 技術 ] 何をいまさら当たり前の事を・・・と思われるだろう。 $ nohup long_run_batch.sh & SSHからログアウト後も実行を続けたいバッチジョブを、"&"を付けてバックグラウンドジョブとしてnohupから起動するのは定番中の定番である。 しかし、「nohupを使わなくても実行を続けることが出来る」やり方があったり、さらには「nohupを付けてもログアウト時に終了してしまう」パターンがあるとしたらどうだろう? そして、ある日あなたの後輩や同僚がこれらについてあなたに質問してきたら、あなたはどう答えるだろうか? 「Web上で検索したら見つか

  • 開発メモ: KVSとシグナル機構でジョブキューを実現する

    いわゆるkey-value storeを使っている際に、レコードの挿入もしくは更新を検知して即座に何らかの処理を行いたくなることはないだろうか。俺はあんまりないけど、結構そういう質問が来るので、きっと巷にはそういう要求があるのだろう。Kyoto Cabinetでそれを実現してみた。 ジョブキュー もうちょい具体的な例を挙げると、ジョブキューである。ここで、「foo」という名前のタスクを考えてみる。読み出し側(ワーカ)は、適当な名前をつけた条件変数を常に監視していて、そこにシグナルが飛んできたら即座にレコードを取得して処理を行いたい。しかし、「一定の間隔毎にレコードの検索を繰返して発見したら処理を行う」というポーリングスタイルにはしたくない。操作にどうしてもタイムラグが出るし、ポーリングのための無駄なトラフィックが発生するからだ。 シグナル待機処理と該当レコードの取得処理を行う擬似コードは以

    iww
    iww 2011/06/16
    あとでまじめに読む
  • ほぼ日刊イトイ新聞- バフンウニの嘆き

    あ、ここですね、 自分の名前の不当さを嘆く場所というのは。 それでは、さっそく嘆かせていただきます。 なお、当方の嘆きに関しては、 ほぼ日刊イトイ新聞宇宙部に所属する 佐藤ベイさんの監修を経ております。 さて、私、ゾンビプロセスと申します。 私はUNIXにおけるプロセスの あるひとつの状態を指すといえます。 ご存じかと思いますが解説すると、 UNIXというのはOSの呼び名で、 もともとは1968年にアメリカのAT&T社で 開発されたものですが、 現在はそこから多くの派生OSが存在するため、 そういったUNIX的OSを総称して UNIXと呼ぶ場合が多いようです。 そのUNIXからメモリ領域の割り当てを受けて 処理を実行するプログラムが すなわちプロセスなのですが、 あるプロセスは必要に応じて 他のプロセスを起動することができまして 起動する側を親プロセス、 起動された側を子プロセスと呼ぶわけ

  • POSIXシグナル2 - s-kita’s blog

    同じシグナルがほぼ同時に複数配送される場合 シグナルハンドラを設定してwaitを呼び出すだけでは、ゾンビ防止には不十分。Unixのシグナルはキューイングされないために、シグナルが発生した数だけ、シグナルハンドラが実行されない場合があるから。 正しい解決方法は、waitの代わりにwaitpidを呼び出すこと。 //waitpidを呼び出すシグナルハンドラ void sig_child(int signo) { pid_t pid; int stat; while ( (pid = waitpid(-1, &stat, WNOHANG)) > 0) printf("child %d terminated\n", pid); return; } ネットワークプログラミングで遭遇する3種類の状況1.子プロセスをforkするプログラムでは、SIGCHLDシグナルを捕捉しなければならない。 2.シグナ

    POSIXシグナル2 - s-kita’s blog
  • タイムアウト処理 - futomi's CGI Cafe

    処理に時間がかかりそうな処理を書く際、タイムアウト時間を設定して、それを超えても処理が完了しなければ、 エラーを表示するような処理が必要になることがあります。 特に、ソケットを使って外部サーバーと通信する場合などがあてはまります。 もし相手のサーバーからの応答が無かったらどうなるでしょうか。 応答があるまで待ち続けることになります。 または、ブラウザー側が見切りをつけて待機することをやめてしまうでしょう。 もしご利用のレンタルサーバーに CGI の処理時間に制限があれば、Internal Server Error となるでしょう。 ここでは、秒数を指定してタイムアウト時の処理ができるうようにする方法を解説します。 目次 タイムアウト処理の方法 タイムアウトの処理を実装する方法として、ALRM シグナルを使う方法を解説します。 シグナルとは、イベントが発生した際に、オペレーティングシステムが

  • Perl:%SIGによるシグナルの制御

    技術ドキュメント目次 -> Perl -> %SIGによるシグナルの制御 技術ドキュメントは、2002~2004年頃に作成したものが多いです。 内容が古くなっていることもあるかと思いますが、ご了承ください。 【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。 ◆ %SIGによるシグナルの制御 %SIGという特殊な連想配列の値を変更することで、 Perl のスクリプトの中からもシグナルの制御を行うことが可能になります。 次のような構文でシグナルを受け取った時に処理されるサブルーチンを指定することができます。

  • タイムアウトを設定してsystem関数を使いたい - ソフトウェアエンジニア現役続行

    LinuxのC言語では「タイムアウトを設定してsystem関数を使いたい」と思っても、これが思うように出来ません。 「プロセスをforkさせて、子プロセスでsystem関数を実行して、親プロセスがタイムアウト時に子プロセスを殺せば良い」と思うかも知れませんが、それではうまく行きません。子プロセスを殺しても、そのときsystem関数で実行中のプロセスはinitプロセスの直下に移動してプロセスの実行を続けてしまうからです。 そこで、子プロセスでsystem関数ではなくexecv族の関数を使うようにします。そうすればタイムアウト時に親プロセスが子プロセスを殺すと、execv族の関数によって実行されているシェル関数も殺されます。 これを実装する関数を作りました。使い方は簡単。 int system_with_timeout (char *command, int timeout); command

    タイムアウトを設定してsystem関数を使いたい - ソフトウェアエンジニア現役続行
  • Perl/タイムアウト方法 - BugbearR's Wiki

    2017-04-16 FreeBSD/mpd 2016-12-23 RecentDeleted Blogアプリ 日記 2016-11-17 当にあった怖いコード/1 2016-05-16 .NET 2015-07-06 書きたいこと 2015-07-05 postgres Java/変数の初期化に安易に空オブジェクトを代入しない 2015-06-30 PukiWiki/1.4/マニュアル/プラグイン/u 当にあった怖いコード/15 2014-10-01 日記/2014-10-01 2014-09-09 日記/2014-09-09 2014-08-13 日記/2014-08-10 2014-05-28 バグパターン/日時 バグパターン 2014-04-13 IPv6 2014-03-20 パスワード問題 2014-01-27 DNS/ルートサーバーは13台という神話 2014-01-25

  • selectを横から止める方法:Geekなぺーじ

    ここでは、selectに登録しているファイルディスクリプタに対して入出力を行わず、かつ、timeoutを設定せずにselectを横から止める方法を説明したいと思います。 selectを横から止めたい時とは? selectはブロッキングAPIです。 selectを利用すると、selectに登録したファイルディスクリプタが入力/出力可能になるか、タイムアウトが来るまでブロックし続けてしまいます。 例えばマルチスレッドプログラミングなどを行っているときに、片方のスレッドでselectを使ってずっと入力を待っていたとします。 もう片方のthreadで何らかの理由により、selectのループをbreakしたくなったときにselectを解除したくなる場合があるとします。 このようなときには、selectが行われているPIDに対してシグナルを送信するとselectはEINTRで抜けてきます。 説明だけで