2011-12-07 9 views
0

シェルのいくつかのコマンドの機能(UNIX)をC言語で書くにはどうしたらいいですか?例:exit関数のソースコードは何ですか?どのようにしてC言語でその関数を書くことができますか?シェルコマンドのソースコード

または

たとえば、 exitコマンド:シェルを終了するexitコマンドを実装します。

と同様にpwdコマンドの場合:ユーザーの現在の作業ディレクトリを表示するpwdコマンドを実装します(この方法は/リンク/ブックから取ることができます)。

+0

「exit」は必ずシェルビルトインです。 –

答えて

2

ソースコードが必要な場合は、ページで見つけることができます。

プログラム内からシェルを終了する方法を尋ねる場合は、exitコマンドラインコマンドはbashビルトインで、/bin/exitはありません。適切なPIDを見つけてそれを殺さなければなりません。 exitビルトインはおそらく何らかのクリーンアップを実行した後、exit(int)を使用します。

シェル組み込み関数のソースコードを使用する場合は、bash sourceを参照してください。

1

多くのシェルはオープンソースまたはフリーソフトウェアであるため、ダウンロードしてソースコードを調べることができます。簡単な例では、より複雑な例は、(シェルのexitbuiltinから呼び出さ)exit機能がGNU libcの内側に、それは(atexitなどにより、例えば。)登録したハンドラを実行しているzsh

で、sashあり、その後_exitシステムを呼び出しますコール。

system callsは主に、私は強く、例えばのように、オペレーティング・システム上で良い教科書を読んでお勧めします、そのソースコードkernel.org

にあるlinux kernelによって処理されます最新のオペレーティングシステム Andrew Tanenbaum著オペレーティングシステムの理解 by Ann McHoes &、Ida M. Flynn。

また、良いPosix/Unixプログラミングブックを読むことをお勧めします。 Rochkindによって&スティーブンス遅い

+0

あなたはどの教科書を読むのが好きでしょうか? exit、pwd、lsなどのC言語でSHELL(UNIX)のコマンドをいくつか実装したいと思っています。 –

+0

編集した答えで参考にしました。そして、私があなたに与えたすべてのリンクに従うことを本当に勧めます。最後に、なぜこの質問をしているのか分かりません。あなたは家の仕事として小さなシェルをコーディングしていますか? –

+0

はい;タスクは、小さなシェルを作成することです!わずか数日が残っています!ほとんど一週間。これらのすべてを行う適切な考えを得ることができませんでした。最初のステップは、これらのコマンドを実行し、入力を取得するコードを書くことです。 –

関連する問題