- 締切済み
PERLとシェルについて
コマンドプロンプトで入力されたPERLコマンドはシェルのプログラムによってカーネルに引き渡されてカーネルがPERLのプログラムにそのコマンドを実行させて、その結果をカーネル→シェルへと引き渡されてコマンドプロンプトに表示されるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
例えば、シェルで、 $ perl -e "print 'ABC';" と打つと、シェルが例えば /usr/bin/perl と引数 "-e" と "print 'ABC';" をカーネルに引き渡して、カーネルが /usr/bin/perl を起動します。 その後、perlが "-e" と "print 'ABC';" を解釈して、最終的には、少なくとも write(1,"ABC",3) というシステムコール(カーネル機能の呼び出し)が呼ばれて文字列が表示されます。 実際には、このほかに、直接結果が目に見えないシステムコールをいくつか行っています。 システムコールの様子は、 strace perl -e "print 'ABC';" でわかります。 シェルも含めてシステムコールを知りたければ、 strace sh -c "perl -e \"print 'ABC';\""
- tropic_snow
- ベストアンサー率61% (51/83)
カーネルにこだわっておられるようですが、なぜでしょう? コマンドの流れと出力結果の流れを気にされてますか? それなら、fork,execとファイルディスクリプタの関係を調べられたらスッキリすると思いますよ。 shellがfork&execでperlを実行して、perlは(単純な場合)標準出力に結果を出力しているだけでしょうから。
- toshi7607
- ベストアンサー率12% (60/482)
shellからperlのプログラムを呼び出してるだけで、画面に表示させてるのはperlです。
- cocodoco5656
- ベストアンサー率19% (38/192)
インタプリタはどこに行った?
お礼
回答ありがとうございました。 Perlプログラムがシェルによって呼び出され、コンソールに打たれたPerlコマンドはPerlプログラムによって解釈された後、カーネルに処理の命令をするといった一連の流れをたどるのでしょうか?