タグ

unixに関するpunitanのブックマーク (7)

  • ファイル記述子をUnixドメインソケット経由で渡す - bkブログ

    ファイル記述子をUnixドメインソケット経由で渡す Unix 系の多くの OSには、ファイル記述子を別のプロセスに Unix ドメインソケット経由で渡す機能があります。一見、何のために使うのかよくわからない機能ですが、 glibc の nscd はこれをうまく使っています。 nscd (name service caching daemon) は glibc 内で行われる名前関連の問い合わせをキャッシュするサーバです。NIS や LDAP などを用いてネットワークベースでユーザ管理を行っている場合、 getpwuid() などの関数はユーザ名の取得にネットワークアクセスを必要としますが、 nscd を立ち上げておけば、二度目からの同じ問い合わせはキャッシュから得られます。 nscd を立ち上げている GNU/Linux システムでは、キャッシュファイルが /var/db/nscd 以下に作

  • UNIXの達人によるセックス:Geekなぺーじ

    パターン1 #!/bin/sh unzip; strip; touch; grep; finger; mount; fsck; more; yes; umount; sleep; パターン2 who | grep -i blondie | talk; cd~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep パターン3 gawk; talk; nice; date; wine; grep; touch; unzip; strip; touch; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; make mrproper

  • ワンライナー「linux sex」を美女Linuxで再現してみた - このブログはURLが変更になりました

    commandlinefu.comで「linux sex」と題されたワンライナーが紹介されていたが削除されてしまったようなので、美女Linuxを使って再現してみた。 stripとyesとumountは画像がなかった。残念。 美女Linuxのサイトに無断転載禁止って書いてなかったので使ってみたが、怒られたら消します。 コマンド再掲。 $ date ; unzip ; strip ; touch ; grep ; finger ; mount ; fsck ; more ; yes ; umount ; sleep 追記:このネタ2007年にgeekpageさんで紹介されてましたね。 Geekなページ : UNIXの達人によるセックス まぁ美女Linuxを使ったところが新しいということで。

  • 第6回 UNIXプログラミングの勘所(3) | gihyo.jp

    ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI

    第6回 UNIXプログラミングの勘所(3) | gihyo.jp
  • 第6回 UNIXプログラミングの勘所(2) | gihyo.jp

    forkとファイルハンドル UNIX系のOSでは、複数のプログラムが、それぞれプロセスという単位で動作しています。forkというシステムコール[1]が呼び出されると呼び出したプロセスの複製がOSによって作成され、複製されたプロセス(子プロセス)がexecveというシステムコールを使って別のプログラムにすり替わる、というしくみでさまざまな処理を実行するようになっています。 「複製」と言っても、全部の情報が複製されるわけではありません。プロセスのメモリイメージが複製される[2]一方で、プロセスが開いている「オープンファイル記述」(⁠open file description)(⁠注3)は複製されません。forkのあとは、親プロセスと子プロセスの両者が、単一のオープンファイル記述を指す「ファイル記述子」(⁠file descriptor)(⁠注4)を持つことになります(図2⁠)⁠。 図2 for

    第6回 UNIXプログラミングの勘所(2) | gihyo.jp
  • 第6回 UNIXプログラミングの勘所(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはJapanizeやText::MicroTemplateなどで有名な奥一穂さんで、テーマはUNIXプログラミングです。 はじめに 「正しいプログラム」を書くために必要な知識とはなんでしょうか。テストが正しく実行されることは、正しいプログラムであるための必要条件に過ぎません。プログラミングにおいてはプログラミング言語だけでなく、OSの動作やデータベース、ネットワークプロトコルなど、さまざまな知識が必要になります。 PerlはもともとUNIX系のOS(LinuxやFreeBSD、Mac OS XなどのOSを稿では以下UNIXと総称します)の上で処理を行うためのスクリプト言語として開発され、今日でもPerlプログラムの多くはUNIX上で実行されています。しかし、「⁠Perlでプログラミング」と言った場合はともすれば

    第6回 UNIXプログラミングの勘所(1) | gihyo.jp
    punitan
    punitan 2011/04/01
  • ファイルに書かれたら irc とかネットに通知するとかそういうデーモンを作るときは mkfifo するといいんじゃないか - kazuhoのメモ置き場

    デーモン側をこんな感じで書きます。 use Errno qw(EEXIST); use Fcntl qw(S_IFIFO); use POSIX qw(mkfifo); my $FIFO_NAME = "/tmp/my_messenger.fifo"; if (mkfifo($FIFO_NAME, 0666)) { # ok } elsif ($! == EEXIST) { die "$FIFO_NAME is not a fifo!" unless +(stat($FIFO_NAME) & !S_IFIFO) != 0; } else { die "failed to create fifo:$FIFO_NAME, $!"; } while (1) { open my $fh, '<', $FIFO_NAME or die "failed to open fifo:$FIFO_NAME,

    ファイルに書かれたら irc とかネットに通知するとかそういうデーモンを作るときは mkfifo するといいんじゃないか - kazuhoのメモ置き場
  • 1