binfmtc - binfmt_misc C scripting interface

binfmt_misc C scripting interfaceとは

C言語を愛している,C言語でプログラムを書くことに快感を覚える. 毎日Cでコードを書いていないとなんとなく体調が悪い気がする. 最近妻との会話はC言語がないとなりたたない. だけど,C言語でスクリプトも書いてしまいたいのに,インタプリタ言語のほうが 実行までの手間がすくないのでついついそっちを使ってしまう. そんな症状のあなたに朗報です. 従来,シェルやperlなどのスクリプト言語にたよってきた場面でも Cを使ってしまえるためのハックがbinfmtcです.

また,C言語本来の書式でコマンドを発行できるreal CSHを例として配布しています. 我々が過去10年以上使い慣れて来たC shellとは違う,真のC shellの使い味をお楽しみください.

スクリーンショット

C assembly C++ real csh

C言語,アッセンブリ言語,C++言語でのスクリプトを実行している例です. 最後の例は,入力行を毎行Cプログラムとして実行するシェル環境,realcshです.

使い方

スクリプトとして実行したいCのソースコードの最初に/*BINFMTC: コンパイルオプション(マジックと呼ぶ)を記述し, スクリプトに実行権限を追加します. そのスクリプトを実行するたびに, コンパイラがコンパイルして実行してくれます.

インストール方法

sidの場合は,下記の行を/etc/apt/sources.listに追記して, apt-get update; apt-get install binfmtcでよいです.

deb http://www.netfort.gr.jp/~dancer/tmp/20050523 ./
    

原理

binfmt_miscにマジックを登録することで, binfmtc-interpreterプログラムを起動するように設定します. binfmtc-interpreterは起動指示されたスクリプトを解析し, gccに必要なオプションを与えてコンパイルし, 実行形式のバイナリを一時的に作成し, できたバイナリを実行します.

今後の展望

便利,ですか?

参考


Junichi Uekawa

$Id: binfmtc.html.ja,v 1.11 2006/04/16 03:03:16 dancer Exp $