Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

Home Subscribe Unixデーモンの仕組み 12 March 2015 おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん、Unixデーモンよく使ってますよね。 Webエンジニアなら、Webサーバ、メールサーバ、DBサーバ、cronなどがよく使われるのではないでしょうか。 24時間365日黙々と働き続けるUnixデーモン達。 身近な存在だと思いますが、実はどういう仕組みで動いているのかご存じない方も多いのではないでしょうか。 先日、オトバンクでUnixデーモンの仕組みについて勉強会をやったので、その内容をまとめます。 デーモンとは では、デーモンとはいったい何なのでしょうか。 Unixライクシステムにおいて、バックグランドで動作して様々な処理を実行してくれるプロセスがデーモンです。 デーモンには明確な定義はありませんが、だいたい次のような条件を満たすプロセスが
なるほどUnixプロセス ― Rubyで学ぶUnixの基礎を読みました。UNIXプロセスの話、特に実用的なforkの利用方法についての話がコンパクトにまとまっていてわかりやすかったです。あまり詳細に踏みこんでいるという感じではないけど、とっかかりにこの本にあるような知識があるのは良いと思いました。(シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべブログ ♨ではまる前に読んでおいたら、もっとはやく問題解決できたと思います。) 第18章 デーモンプロセスに関係して二回目のforkについていろいろ調べたので、せっかくなのでメモを残しておきます。*1 第18章 デーモンプロセス では、プロセスをデーモン化するために必要な手順が丁寧に説明されています。その中で、プロセスを制御端末から切り離す手順として以下のようなコードが紹介されていました。
fork はシステムコールで、新しいプロセスを生成する際に使用します。 SYNOPSIS #include <sys/types.h> #include <unistd.h> pid_t fork(void); DESCRIPTION fork()システムコールは、元となるプロセス(親プロセス)を複製し PID (プロセス ID)と PPID (親プロセス ID) が 異なるプロセス(子プロセス)を生成します。新しく作られた子プロセスは、親プロセスのファイルロックと保留しているシグナル以外ほとんどがコピーされます。 fork()システムコールが呼び出された後、親プロセスには子プロセスのプロセスIDが返され、子プロセスには 0 が返されます。fork()システムコールが失敗した場合、親プロセスに -1 が返され子プロセスは生成されません。 親プロセスは、子プロセスを生成した後は通常の処理に戻
サーバーの作り方 これまで説明してきたネットワーク通信の方法を踏まえて、 サーバーとなるデーモンのプログラムの作り方に関連した色々な技術を紹介します。 先に紹介した inettcps.cc を基本にいろいろ 改造を加えていきます。まずこれの基本部分は以下のとおりでした。 int s = accept( sb, NULL, NULL ); char rmsg[64], smsg[64]; int len = recv( s, rmsg, sizeof(rmsg), 0 ); rmsg[len]='\0'; len = snprintf( smsg, sizeof(smsg), "Server recv: %s", rmsg ); len = send( s, smsg, len, 0 ); close(s); inettcpsを走らせて、別の端末から telnet コマンドで以下のようにして
Rubyのthreadの使い方について教えてください。 tcp/ipのserverがacceptするたびにthreadを生成して処理をさせるようなサンプルソースはないでしょうか。
Webデザインを行っていたり、システム開発を行っている際にちょっと変更して再読み込みしたり、ファイルを変更したらバージョン管理でコミットしたりと繰り返し同じ作業を行うことがある。 ファイルの変化を感知してアクションを実行する そのような時に都度ボタンを押すのは面倒だ。ファイルの変更を自動で感知して何かのアクションを起こしてくれれば良い。 今回紹介するオープンソース・ソフトウェアはifchanged、ファイルの変化を感知してアクションを実行するソフトウェアだ。 ifchangedはRubyで作られている。が、特にRubyの開発に限らず利用することができる。ファイルは正規表現で指定することも可能で、ディレクトリ以下にあるいずれかのHTMLファイルが変更されたら指定したアクションを実行するといった設定ができる。 監視中 例えば指定したURLを開く、git commitを実行するなどの使い方が考え
GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く