タグ

UNIXに関するdamehumanのブックマーク (18)

  • シグナルハンドラにprintf()を書いてはいけない - Qiita

    三行でまとめると シグナルハンドラ内でprintf()してはいけない というより、余計な処理を書いてはいけない もう一度言う、シグナルハンドラで余計なことをするな、非常に大事なことだ はじめに シグナルハンドラでやってよい処理は非常に限られるのに、全くルールを守らないサンプルコードが世の中に大量に出回っている。printf()するなんてもってのほかなのだが、カジュアルにそこらじゅうで見かけて非常に悲しい。 この記事では、そんな状況を少しでも改善したいと思い初心者向きに書いたものだ。そのため、下記では、回避するにはどう実装すればよいのか、ルールを破るとどうなるのか、といった点を先に簡潔に記述する。 なぜしてはいけないのか、POSIXだとかリエントラントだとか、は下の方に追いやっている。玄人は読んでてウズウズするだろうが、細かい話はできるだけ目につかないような構成としたため了解いただきたい。

    シグナルハンドラにprintf()を書いてはいけない - Qiita
  • O'Reilly Japan - オープンソースソフトウエア Web版

    目次 訳者まえがき 謝辞 1   はじめに クリス・ディボナ/サム・オックマン/マーク・ストーン 2   真のプログラマ(hacker)たちの国――概略史 エリック・S・レイモンド 3   バークレー版UNIXの20年 (UNIXが、AT&Tの所有物からオープンソースソフトウェアになるまで) マーシャル・カーク・マクージック 4   インターネット・エンジニアリング・タスクフォース スコット・ブラドナー 5   GNUシステムとフリーウェア運動 リハード・ストールマン 6   シグナスソリューションズ社の将来性(創業者からの報告) マイケル・ティーマン 7   オープンソース開発におけるソフトウェア工学的側面 ボール・ヴィクシー 8   Linuxの強味 リーナス・トーバルズ 9   ユーザにすべてを提供するビジネスモデル ロバート・ヤング 10  努力、忍耐、謙遜 ラリー・ウォール 11

  • Unix プロセスと Docker の罠

    子プロセスを生成する方法として、fork が挙げられます。 fork は、プロセスのコピーを生成するシステムコールで、コピーされた新しいプロセスを子プロセス、fork の呼び出し元のプロセスを親プロセスと呼びます。

    Unix プロセスと Docker の罠
  • shutdownコマンドとrebootコマンドの違いについて

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

    shutdownコマンドとrebootコマンドの違いについて
  • Unixデーモンの仕組み

    Home Subscribe Unixデーモンの仕組み 12 March 2015 おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん、Unixデーモンよく使ってますよね。 Webエンジニアなら、Webサーバ、メールサーバ、DBサーバ、cronなどがよく使われるのではないでしょうか。 24時間365日黙々と働き続けるUnixデーモン達。 身近な存在だと思いますが、実はどういう仕組みで動いているのかご存じない方も多いのではないでしょうか。 先日、オトバンクでUnixデーモンの仕組みについて勉強会をやったので、その内容をまとめます。 デーモンとは では、デーモンとはいったい何なのでしょうか。 Unixライクシステムにおいて、バックグランドで動作して様々な処理を実行してくれるプロセスがデーモンです。 デーモンには明確な定義はありませんが、だいたい次のような条件を満たすプロセスが

    Unixデーモンの仕組み
  • UNIX/Linuxのパイプ - 滴了庵日録

    20年くらい日々使っていながら、UNIX/Linuxのパイプの振る舞いをよく分かってませんでした。『易経』に「日に用いて知らず」というのはこれです。ちょっと簡単なコードで実験してみました。 リスト1 test1.c #include <stdio.h> int main(void) { int i; for(i=0;i<5;i++){ sleep(1); printf("test1(%d)\n",i); fflush(stdout); // ←これが大事 } return 0; } リスト2 test2.c #include <stdio.h> int main(void) { char buff[1024]; printf("test2 starts.\n"); while(gets(buff)!=NULL){ printf("test2[%s]\n",buff); } return 0

    UNIX/Linuxのパイプ - 滴了庵日録
  • Unix Domain Socket において keep-alive が性能に与える影響 (Gazelle vs Meinheld) - methaneのブログ

    id:kazeburo さんが Gazelle という高速な Perl 用の Web アプリケーションサーバーを公開されました。 Gazelle - Plack Handler for performance freaks #yokohamapm from Masahiro Nagano Gazelle の特徴のうち幾つかは、 id:mopemope 作の Meinheld と同じです。 IO周りは全てCで書かれている accept4 や writev などの Linux 独自のシステムコールを利用している 一方で異なる点もあります。 Meinheld は HTTP/1.1 に対応していて、 keep-alive が利用できる。 Meinheld は greenlet というコルーチンを利用して、 long polling や SSE に対応している。 Meinheld が http-pa

    Unix Domain Socket において keep-alive が性能に与える影響 (Gazelle vs Meinheld) - methaneのブログ
  • なるほどUnixプロセス - Rubyで学ぶUnixの基礎を読んだ - razokulover publog

    先日ISUCONが行われていた。 ボクは出場してなくて、Twitterから観戦しているだけだったんだけどisuconタグを眺めていると以下のスライドが流れてきた。 今回2位だったpixivチームのkatatsuyさんがisucon前に作っていた神資料らしい。 読んでみたが、なるほど、広告サーバーの構築時の苦労や知見が素晴らしくまとまっている。 で、スライドの最後のほうにおすすめの書籍が記されててそこに『なるほどUnixプロセス - Rubyで学ぶUnixの基礎』があったので購入して読んでみた。 親プロセス、子プロセス、fork、ファイルディスクリプタ、ゾンビプロセス、デーモンプロセス、プロセスグループ、セッショングループ、シグナル、ストリーム、パイプ、IPC、ソケット、コピーオンライト これらの用語の中で説明できない言葉があるRubyエンジニアはこのを読むと良い。 どれもUnixプログラ

    なるほどUnixプロセス - Rubyで学ぶUnixの基礎を読んだ - razokulover publog
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

  • Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する | ギークを目指して

    しばらくLinuxネタが続く・・。 近いうちに最近出たJava8ネタを書いてみようと思います。が、もう少しLinuxネタにお付き合いください。 前回はsshdを対象に親プロセスをkillした場合の動作を確認した。 killされたプロセスの子プロセスは孤児プロセスとなり、カーネルによって自動的にinitプロセスの子として扱われる事を説明した。(この動作を「リペアレンティング」と呼ぶ) 今回はこの続き。 Linuxで作業していてCtrl+Cしてプロセスを終了した場合、フォアグラウンドのプロセスやその子プロセスも一緒に終了する。 ということは、子プロセスは孤児として扱われず、リペアレンティングされていないことになる。 今回の記事ではこの振る舞いの違い(リペアレンティングされるか否か)に着目し、kill -SIGINTコマンドとCtrl+Cの違いについて考えていく。 そもそもkillコマンドやCt

    Ctrl+Cとkill -SIGINTの違いからLinuxプロセスグループを理解する | ギークを目指して
  • 様々なUNIX環境のecho.cの比較

    UNIX V5, OpenBSD, Plan 9, FreeBSD, and GNU coreutils implementations of echo.c UNIX Fifth Editionのecho.cは、以下のような実装になっている。 main(argc, argv) int argc; char *argv[]; { int i; argc--; for(i=1; i<=argc; i++) printf("%s%c", argv[i], i==argc? '\n': ' '); } いかにも昔のC言語らしいコードだ。ヘッダーの#includeはなく、関数の戻り値の型も指定されない。仮引数の型も、今となっては物珍しいだろうが後書きだ。 OpenBSDのコードは以下の通り。 /* $OpenBSD: echo.c,v 1.7 2009/10/27 23:59:21 deraadt

  • Big Sky :: バッチ ジョブを終了しますか (Y/N)?

    Windows を UNIX っぽく使おうとすると、必ずお目にかかるであろうこのメッセージ。 UNIX に慣れている人は、コマンドプロンプトを使いたがる。しかし全ての場合においてコンソールアプリケーションは有能では無いし、異常に長い引数は省略したい。Java VM で動く言語のクラスパス等はスクリプトに書きたいし、オフィシャルから Windows ユーザ向けに用意される物はだいたいバッチファイルだ。しかしながら Cygwin は標準提供物ではないし、嫌いだ。いや、大嫌いだ。 そこで私達は一般的に、バッチファイルという一見便利そげで実は非情なまでに我々に独特の仕様を強要するDSLを頻繁に使う事になる。 例えば Java VM 上で動く clojure を Windows 上で repl として使う場合、僕は以下の様なバッチファイルを「clj.bat」というファイル名にして使っている。 @ec

    Big Sky :: バッチ ジョブを終了しますか (Y/N)?
  • コマンドからファイル印刷のまとめ - はてブロ@ama_ch

    nkf + e2psを使ってファイルを印刷する方法。 e2psはテキストファイルをPostScriptに変換するツールなんだけど、UTF-8に対応していないのでnkfもインストールした。 nkfはMacPortsで。 % sudo port install nkf e2psをWtSeries : UNIXツールからダウンロードして、解凍。 % cd e2ps-4.34 そのままMacでmakeするとエラーが出るので、ps-font.cの14〜52行の行末にバックスラッシュを追加する。 参考:Debian GNU/Linux から Mac OS X に移行したメモ ps-font.c char *gsFonts = "Times-Roman\ Times-Italic\ Times-Bold\ Times-BoldItalic\ --- 中略 --- Ryumin-Light.Hiragan

    コマンドからファイル印刷のまとめ - はてブロ@ama_ch
  • 初めてのOS source code reading(UNIX 6th source code readingのススメ) - やる気のないブログ(A boring diary)

    このエントリはhttp://d.hatena.ne.jp/takahirox/20120131/1328006885を和訳したものです。 はじめに 最近UNIX 6thのソースコードの読書メモを書き終えました。 みさなんにもUNIX 6thのソースコードを読むことをオススメします。 その理由をこのエントリで書いていきます。 まとめ UNIX 6thは初めてOSのソースコードを読む人にうってつけ! 今すぐ読み始めましょう! UNIX 6thのソースコードはこちらなどで読むことができます。 http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6 UNIX 6thのソースコードを読むことをオススメする理由 たったの10,000行 最近のLinuxカーネルのソースコードは100万行を超えています。全てを理解するのは至難の業です。 一方、UNIX 6thのカー

    初めてのOS source code reading(UNIX 6th source code readingのススメ) - やる気のないブログ(A boring diary)
  • Let's use SCREEN!

    LAST UPDATED Jul/21/2007 新情報 Cygwinの公式ディストリビューションにscreen-4.0.3が登録されました。screenインストールメモ Cygwin編 (2007/07/21) screen-4.0.3がリリースされました。screenインストールメモ (2006/10/23) screen-4.0.2用の非公式パッチを1つ追加しました(cjk文字幅誤認識)。screenインストールメモ (2006/06/09) 2ch UNIX板 screenスレ 更新 (2006/05/29) screen-4.0.2用の非公式パッチを2つ掲載しました。screenインストールメモ (2005/01/22) screen-4.0.2がリリースされました。screenインストールメモ (2003/12/07) このページはいったい何? screenはUNIXライクなO

  • 【レビュー】bashの配列を使う方法 | エンタープライズ | マイコミジャーナル

    Guides, HowTos and Tips for Technology Geeks - The Geek Stuff 高機能シェルのひとつにbashがある。shの機能を拡張したsh系に分類されるシェルで、インタラクティブシェルとしてもシェルスクリプトとしても利用される。Linux系のディストリビューションではデフォルトでインストールされ、デフォルトのシェルに設定されていることが多い。その場合、システムの/bin/shの実態がbashになっていることもあり、/bin/shスクリプトを書いているつもりでいつの間にかbashの拡張機能を使っていることもある。 The Ultimate Bash Array Tutorial with 15 Examples - The Geek Stuffにおいてbash拡張機能のひとつである配列の機能が紹介されている。15のサンプルにわけて機能を紹介する

  • めっちゃ便利やねん find コマンドのオプションまとめ | バシャログ。

    こんにちは nakamura です。そういえば 4/1 から 神奈川県公共的施設における受動喫煙防止条例 が施行されましたね。今のところよく行くお店でそれらしい光景は見掛けませんが、先日行った居酒屋はものの見事に禁煙になっていて心なしか客足もまばらな感じでした。神奈川県の飲はこれから厳しそうですな。 さてさて思わず関西弁になってしまうほど便利な find コマンドを今日はご紹介します。比較的有名なコマンドですが、オプションが相当な数あり正直全てを把握するのは無理かもしれません。ただ、よく使うものだけでも頭に入れておくと何かと便利な優れものなのです。 基的なオプション まずは基的な使い方。 -type ファイルタイプの指定に使用するオプションです。スペシャルファイルや名前付きパイプ等様々な引数がありますが、よく使うのはディレクトリを示す d と通常ファイルを示す f でしょうか。 -n

    めっちゃ便利やねん find コマンドのオプションまとめ | バシャログ。
  • 第一回 カーネル/VM探検隊まとめ - カーネル/VM探検隊 | Google グループ

    まとめページ作りました。 メンバーなら自由に編集出来るので、弄って充実させちゃってください。 http://groups.google.com/group/kernelvm/web/%E7%AC%AC%E4%B8%80%E5%9B%9E+%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%EF%BC%8Fvm%E6%8E%A2%E6%A4%9C%E9%9A%8A%E3%81%BE%E3%81%A8%E3%82%81?hl=ja

  • 1