• 締切済み

PERLとシェルについて

コマンドプロンプトで入力されたPERLコマンドはシェルのプログラムによってカーネルに引き渡されてカーネルがPERLのプログラムにそのコマンドを実行させて、その結果をカーネル→シェルへと引き渡されてコマンドプロンプトに表示されるのでしょうか?

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

例えば、シェルで、 $ 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';\""

回答No.3

カーネルにこだわっておられるようですが、なぜでしょう? コマンドの流れと出力結果の流れを気にされてますか? それなら、fork,execとファイルディスクリプタの関係を調べられたらスッキリすると思いますよ。 shellがfork&execでperlを実行して、perlは(単純な場合)標準出力に結果を出力しているだけでしょうから。

  • toshi7607
  • ベストアンサー率12% (60/482)
回答No.2

shellからperlのプログラムを呼び出してるだけで、画面に表示させてるのはperlです。

deepest
質問者

お礼

回答ありがとうございました。 Perlプログラムがシェルによって呼び出され、コンソールに打たれたPerlコマンドはPerlプログラムによって解釈された後、カーネルに処理の命令をするといった一連の流れをたどるのでしょうか?

回答No.1

インタプリタはどこに行った?

関連するQ&A