タグ

signalに関するmanabouのブックマーク (14)

  • signal送信元を知る - Qiita

    はじめに プロセス間の非同期通信としてよく使われるsignalですが、 送信元を知る必要があり方法を調べてみたので備忘メモとして残しておきます。 試した環境は以下のとおりです。 $ lsb_release -d Description: Ubuntu 18.04.4 LTS $ uname -r 5.3.0-61-generic $ trace-cmd --version | grep version trace-cmd version 2.6.1 $ stap --version | head -1 Systemtap translator/driver (version 4.3/0.170, commit release-4.3-0-gc9c23c987d81) 方法1. sigaction(2)で知る signalを受け取るプロセスで送信元の情報を取得するアプローチです。 signa

    signal送信元を知る - Qiita
  • IEEE's Signal Processing Society 10th Solutionと得られた学び

    We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

    IEEE's Signal Processing Society 10th Solutionと得られた学び
  • 「シグナル」を送ってみよう

    前回は、シグナルについて、シェルでのキー操作を通じて確認しました。今回は、killコマンド/killallコマンドを使って、動作中のプロセスにシグナルを送ってみましょう。 連載目次 シグナルとkill/killallコマンドの関係 何らかの理由で終了させることができなくなった「プロセス」は、「kill」コマンドや「killall」コマンドで終了させることができます。また、killallコマンドは、キー入力などを受け付けないサーバプロセスを終了させたり、再起動させたりする際にも使用します。 killコマンド/killallコマンドは、動作中のプロセスに対して「シグナル」を送信するコマンドです。プロセスの終了には「TERMシグナル(SIGTREM)」や「KILLシグナル(SIGKILL)」を、サーバプロセスの終了/再起動には「HUPシグナル(SIGHUP)」を送信します。 なお、killコマン

    「シグナル」を送ってみよう
  • Linuxの「シグナル」って何だろう?

    Linuxの「シグナル」って何だろう?:“応用力”をつけるためのLinux再入門(16)(1/2 ページ) 前回、ジョブを停止させる際に使用した[CTRL]+[Z]キーや、コマンドの実行を中断したいときの[CTRL]+[C]キーは、どんな意味を持つ操作なのでしょうか。今回は、Linuxの「プロセス」や「ジョブ」の制御に関わりの深い「シグナル」を解説します。 連載目次 Linuxのシグナルとは何か? 「シグナル」はプロセスとプロセスの間で通信を行う際に使用される“信号”のことで、シグナルを受け取ったプロセスは“何らかの動作”を行います。その動作は、例えば「再起動」であったり、「終了」であったりします。 [CTRL]+[C]は「SIGINT」というシグナルを行うキー操作、[CTRL]+[Z]は「SIGTSTP」というシグナルを行うキー操作です。 シグナルの種類 シグナルには多くの種類があり、名

    Linuxの「シグナル」って何だろう?
  • Linux Programming - Signals the easy way

    Signals Signals are the the necessary evil that almost nobody get right. So this is all about dealing with them in a manageable way that will also make them usable again inside a normal program. Lets have a look at some really common mistakes when dealing with signals in the old way when using signal / sigaction. Common Mistakes Restrictions Signals handlers have great restrictions on what can be

  • Linux シグナルの基礎

    TLPI (The Linux Programming Interface) 再々。 TLPI の輪読の際に @matsumotory よりシグナルセットあたりをまとめるようにと指令が出たので、拙遅な感じでまとめました。 シグナルとは プロセス間通信の一種。「プロセスにシグナルを送信すると、そのプロセスの正常処理に割り込んで、シグナル固有の処理(シグナルハンドラ) が実行される」プロセス側では、シグナルを受信した際の動作(シグナルハンドラ) を設定することや、シグナルをブロックすることも可能。 コンソールで、プロセスを終了させるためにkill -9 <PID>とかCtrl+Cとかした際にも、対象プロセスにシグナルが送信されている。 ちなみに、PID「1」の initsystemd にkill -9 1しても何も起らない。(そういえば昔、oom-killer に init を殺された覚

    Linux シグナルの基礎
  • 闇PHP勉強会 #yamiphp でASTとsignalについて話してきたこと - do_aki's log

    時間が開いてしまいましたが、先週 第七回闇PHP勉強化に参加し、トークしてきました。 タイトルは「PHP AST 徹底解説(補遺)」および、「signal の話 或いは Zend Signals とは何か」です。 前者は、過日 PHPカンファレンス2016 で発表した「PHP AST 徹底解説」の補足集で、PHPカンファレンス2016 では時間の都合上省略したり、発表後に指摘された内容について調べたものになります。 後者は PHP における signal 処理についての概要と、7.1 における変化を解説しました。 PHP AST 徹底解説(補遺) from do_aki signal の話 或いは Zend Signals とは何か from do_aki PHP AST 徹底解説(補遺) の、ASTに関する部分については 「PHP AST 徹底解説」にマージしてありますので、興味があれば

    闇PHP勉強会 #yamiphp でASTとsignalについて話してきたこと - do_aki's log
  • Unixプロセスとシグナルの基礎をRubyで再確認した - えいのうにっき

    前回までの続き。なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - 達人出版会をまだ読んでいる。遅読。 Unixプロセスとリソースの基礎を再確認した - えいのうにっき プロセスとの情報のやりとりについて再確認した - えいのうにっき プロセスの適切な扱い方を再確認した - えいのうにっき 今回は、Unixプロセスとシグナルの基礎について再確認していく。 Unixシグナル・事始め Unixシグナルの「いろは」 シグナルを再定義する シグナルハンドリングの注意点 Unixシグナル・事始め 前回、子プロセスの終了を待ち受けるのに用いた Process.wait は、実行するとそこで自身(親プロセス)の処理を止めて子プロセスの終了を待った。これは ブロッキング呼び出し と呼ばれる。 では「親は親で何か別の仕事をしたいとき」はどうするかというと、これから見ていくシグナルを上手に使うと実

    Unixプロセスとシグナルの基礎をRubyで再確認した - えいのうにっき
  • Trapping signals in Docker containers

    Have you ever stopped a Docker container? There are essentially two commands: `docker stop` and `docker kill` that can be used to stop it. Behind the scenes, `docker stop` stops a running container by sending it SIGTERM signal, let the main process process it, and after a grace period uses SIGKILL to terminate the application. Running applications in Docker, you could use signals to communicate wi

    Trapping signals in Docker containers
  • Evan Czaplicki「脱FRP。またはThe Elm ArchitectureからSignalを消した件」 - 以下斜め読んだ内容

    elm-lang.orgの2016.5.10のブログエントリ farewell-to-frp ElmクリエータのEvanによる最新版0.17のアナウンス 「Reactiveとか、非同期データストリームとかObservableとか、まあええけど、敷居上げすぎじゃね?」 「じゃあSignal外して」「脱FRPしとくか」(今回) 「WebAssembly来るかも?」 「じゃあサクッと移行できるようにJSとのインフェース最小にしとくか」 「いつでもどこでも脱AltJSできるように準備しとくか」 「クロスコンパイルとかはいいわ」 「OSS化しましたので皆様使って頂けたら。。。。」 「神頼み?それじゃあエコシステムはできんわ」 「フルタイムでElm開発できるとこに入っとく」(Preziにjoin) 「Chigaco大でFunctional Programmingの講義をElmで通してもらった」 htt

    Evan Czaplicki「脱FRP。またはThe Elm ArchitectureからSignalを消した件」 - 以下斜め読んだ内容
  • 世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴 - 百日半狂乱

    前回、「次回もシグナルのことを書く」と書いたのでシグナルのことを書く*1. ソケットプログラミングの落とし穴は色々あるけど、ここでは個人的に嵌ったシグナル関連の落とし穴に関して書き殴る. 結論から書くと、コネクションが切れたソケットに書き込み(send(2)とかwrite(2)とか、同じものだけど)を行うと、SIGPIPEシグナルが発生してプロセスが強制終了するので、きちんとSIGPIPEシグナルをハンドリングしておこうという話. 以下では、サンプルコードを使って、実際にパイプの書き込み先をkillして、SIGPIPEの発生を疑似体験してみる. SISGPIPEを受けたプロセスの挙動とソケットプログラミングでの対応策 「sigpipe」で検索すると、同様の話はいくらでも記事になっていて、例えば、 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。こ

    世にも恐ろしいSIGPIPE、ソケットプログラミングの落とし穴 - 百日半狂乱
  • APIデザインケーススタディの fork と async-signal-safe の記述 : 革命の日々 その2

    最近Rubyの著名デベロッパのakrさんがAPIデザインケーススタディという書籍を出版された。隙を見ては読んでいるのだけどこれが激烈に面白い。 役にも立たない一般原則とかいっさいすっ飛ばし、実例実例、また実例である。そしてすべての例がOSの制限やら過去との互換性やらいろいろな都合でトレードオフを勘案しながら取りうる選択肢のなかでのベストを見つけていくという題材になっているので話がどれもこれもが超面白い みんな買おう。 それはさておき、一点だけちょっと微妙な記述をみつけたのでメモっておく。 P128からはじまる Column async-signal-safe関数 だけど また、実際のところ、子プロセスでasync-signal-safeでない関数を使用するのは、珍しいことではありませんでした。たとえば、ネットワークサーバの作り方の一つとして、クライアントからの接続のたびにforkを行い、子

    APIデザインケーススタディの fork と async-signal-safe の記述 : 革命の日々 その2
  • UNIXのプロセスやシグナルをしっかり理解するための技術ドキュメント「Process Book」 | ソフトアンテナ

    UNIXの基をなすプロセスやシグナルなどを分かりやすく解説した技術ドキュメント「Process Book」がGitHubにて公開されています。 同ドキュメントは、プロセスの生成、プロセスとファイル入出力、ファイルディスクリプタ、preforkサーバーの作り方、ゾンビプロセスと孤児プロセス、シグナルとkill、プロセスグループとフォアグランドプロセスといった話題を解説するドキュメントで、GitHubのreleasesディレクトリにはPDF、epub形式のファイルも格納されています。 UNIX環境でプログラムを開発する際に役立つだけではなく、普通のユーザーとしてターミナルを使ってコマンド操作を行う際にも役に立ちそうな内容だと思います。

    UNIXのプロセスやシグナルをしっかり理解するための技術ドキュメント「Process Book」 | ソフトアンテナ
  • bash で Ctrl-C をフックする方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    bash で Ctrl-C をフックする方法、つまりSIGINTを自前のシグナルハンドラで捕捉する方法についてメモ。 概要 シグナルハンドラを設定するには、trap というbashのビルトイン・コマンドを使います #!/bin/bash hander() { echo "recv!!" } trap hander SIGINT while /bin/true; do : ; done Ctrl-Cを押すと SIGINT という名前のシグナルがプロセスに通知されるので、trapコマンドで SIGINT を受け取ったら hander という関数を呼ぶように設定しています このシェルスクリプトは実行すると末尾で無限ループになるだけです。ただCtrl-C を押しても、シェルスクリプトは終了せず、代わりに hander()関数が呼ばれて"recv!" という文字列が画面に表示されます Ctrl-Cで

    bash で Ctrl-C をフックする方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • 1