タグ

ブックマーク / limitusus.hatenablog.com (3)

  • Server::Starterに対応するとはどういうことか - limitusus’s diary

    StarletやStarmanと組み合わせてよく使われているServer::Starterですが、普段気にしないような部分を読む機会があったのでメモ。 Server::Starterは --port (TCP) や --path (Unix Domain Socket) を渡すとこれでlisten(2)して起動するworkerに引き渡してくれる。 これはfork(2)とexec(2)によってファイルディスクリプタを引き継ぐことにより実現されているが、ファイルディスクリプタそのものをどのように引き渡しているのか、という問題。 exec(2)により実行バイナリは差し換わってしまうので、プログラム中の変数により引き継ぐことはできない。 Server::Starterではこれを環境変数SERVER_STARTER_PORTにより実現している。 おおよそ以下のような感じ。 FD = integer

    Server::Starterに対応するとはどういうことか - limitusus’s diary
  • fork(2)とexecve(2)を使ってみた - limitusus’s diary

    OSの授業で扱っていたfork(2)とexecve(2)ですが,実際に使ってみたことがなかったので実際に試しに使ってみました. 別に特別なことをしたかったわけではないので,とりあえずシェルと同じように動いてくれればいいかなーという設計になっています. 暇な時間に大学で作ったのでMac OS Xでしか動作確認をしていません.多分大丈夫だと思いますが,具体的にはerrnoまわりで何かあるかもしれません. ではソースコードをいつものように追記に置いておきます. switchbreakし忘れてたので修正(erマクロ) id:showyou の指摘により実行結果も追記に書きました 動いたからそのままにしてあるけどargv[argc]は必ずNULLって決まってるのかな? ISO Cの規格書に書いてあるとか http://cobito.tea-nifty.com/bleu/2004/02/argvar

    fork(2)とexecve(2)を使ってみた - limitusus’s diary
    hiroyukim
    hiroyukim 2012/11/11
  • Rakudo Perl6をソースからビルドしてみた - limitusus’s diary

    Perl使いとしてはやはりPerl6のビルドくらいはやっておかないとということでやってみた。 環境 OS Ubuntu 8.10 Intrepid Ibex Server Parrotのインストール % svn co https://svn.parrot.org/parrot/trunk parrot % cd parrot % perl Configure.pl --prefix=/home/limit/local % make % make test % make install revは39563だった。 /home/limit/local/bin/の中にparrotやparrot_configがあることを確認 追記(2009/09/25): 2009/09/25時点での最新版では以下のPerl 6のConfigure.plで % perl Configure.pl --parrot

    Rakudo Perl6をソースからビルドしてみた - limitusus’s diary
    hiroyukim
    hiroyukim 2009/09/10
  • 1