シェルを実装する[0]

前から思っていたのですが、毎日ちまちまアウトプットっていう縛りは
新しい言語の勉強に適しているような気がします。

ということで、この場所を使って一言語習得を目指そうと思い立ちました。

カノ

達人プログラマも一年一言語っていってますしね

気分的には、数年後をにらんでLuaとかErlangとかをやりたいところだったのですが今年は、C/C++言語を勉強することに決めました。

いままできちんと勉強したことがないせいで、まったく自信がなくて、少しコンプレックスになっていたというのが選んだ理由です。

さて、題材ですが、id:sumiiさんのブログにでていた大学の課題がボリュームもあってやりがいがありそうなので、それにしようと思います。

課題は以下。


課題1: シェル作成

シェルを実装しなさい。すなわち、以下の機能を持つプログラムを実装しなさい。

  • 最低でも、「ジョブ管理」「リダイレクト」「(多段)パイプライン」の機能は実装すること。
  • (当然だが)高機能なシェルほど望ましい。
  • プロンプトを表示してユーザのコマンド入力を受け付ける。
  • 入力されたコマンドを解釈・実行する。
  • コマンドの実行が終わると再びプロンプトを表示する。
  • ジョブ管理(フォアグラウンド/バックグラウンド切り替え、ジョブの終了、サスペンド機能、etc…)行う。
  • リダイレクト、パイプラインの機能を持つ。

以上の機能の実現に際して、bash等の他のシェルの助けを借りてはいけない。

課題は、以下の中からひとつ選ぶものだったのですが、

  1. シェル作成
  2. データ圧縮・解凍
  3. スパムフィルタ

他の二つはアルゴリズム的な素養が必要そうだったので、シェル作成にしました。

どこから実装したらいいか、いまいち想像つきませんが
チマチマやっていきたいと思います。

え、今日の学びは? とかいわないこと。

コメント

コメントする

目次