execl関数を攻略しよう!

まず、exec系関数は、現在のプロセスを指定したプログラムに置き換えて実行するというものということを頭に入れておきましょう。

 

今回は

 

execl("/bin/ls","ls",NULL); //lsというコマンドをこのプログラム内で実行したい

 

この文について解説していきます。

 

まず、execlの第1引数である/bin/ls。

 

これは実行ファイルの場所を表しています。

 

初めの/はルートディレクトリ(1番上のディレクトリ)、そのあとの/は次のディレクトリとのただの区切りです。

 

つまりこの第1引数は実行したいファイル(今回で言うとls)の絶対パスを表しているんですねぇ。

 

/

bin 

ls

 

次に第2引数であるls。

 

これは簡単に言うとそのファイルを実行するためのコマンドを表しています。

 

プログラムリストの一覧を開くにはlsっていうコマンドを使いましたよね?

 

そのコマンドを引数として渡しているだけです。

 

わかりやすく言うと、実行したいファイルの場所を見つけた!(第1引数で)

 

けど、そのファイルを開く方法が分からない...。

 

そこで、lsって言うコマンドを使えばそのファイルを開いて実行出来るんだよってことを教えてあげる。

 

これが第2引数でコマンドを渡している理由です。

 

今回は第2引数をlsで表記しましたが、第1引数と同じく/bin/lsで表記してもかまいません。

 

 

ここまでみても第2引数の意味がわからないっていうそこのあなた!

 

第2引数はほとんどの場合、第1引数と同じになります。

 

分からなければ、第1引数と同じものを書いておきましょう笑

 

さて、execl関数を使う上で最も大切なのは最後のNULLです。

 

これは引数リストの最後は必ずNULLでないといけないというルールです!

 

ルールは守りましょう!

 

以上がexecl関数についての解説でした。