次のように、最初の引数をvi自体でviに渡すのはなぜですか?
/bin/vi vi
ただ書いてはいけない理由:
/bin/vi
2つのコマンド間で私が見た唯一の違いは、引数なしで実行がオンにvi
なっvi
ているvim
のに対して、vi
引数として提供するとそうでないということです。
ここで何が起こっているのでしょうか?
ベストアンサー1
execl
実行するコマンドのパスとパラメータを取得します。
通常、最初の引数は実行中のファイルに関連付けられているファイル名を指す必要があります。
したがって、最初のパラメータはです"vi"
。
一方では、コマンドへのパスを指定し、argv
他方ではプログラムが受け取る配列を指定すると考えることができます(ここでは少し単純化しました)。argv[0]
発信者に含める内容を指定することは、発信者によって異なります。
プログラムを使用してargv[0]
動作を調整できます。ご覧のとおり、VimをViとするとViのように動作しますvi
。別の例は、busybox
単一のバイナリに複数のコマンドを実装することです。