これは切り株です。ユーザーがいくつかのコマンドを実行できるようにするシェルプログラムをCで作成しました。これまでの私の調査によると、「ls」や「cat」などのすべてのコマンドは「/bin/」にあります。
「wc」はこのディレクトリにリストされていません-「/bin」。ターミナルを起動すると、「wcfileName」と入力できます。「/」ディレクトリから「find.wc」を実行しましたが、「wc」コマンドが見つかりません。
「wc」がどこに隠れているか知っている人はいますか?
シェルに入力which wc
してみてください...それがどこにあるかを教えてくれるはずです。
私のマシンでは、それはにあり/bin/
ます。
ただし、パスの解決を単独で実行したい場合は、system()
関数を使用できます(詳細についてはを参照man 3 system
してください)。ドキュメントで読むことができるように、これはパス解決のためにBourneシェル(またはそのシンボリックリンクが指す場所)を呼び出すのと実際には同じです。したがって、そのオーバーヘッドが必要ない場合は、どの方法でも使用する必要があります。現在使用しています。
試しwhereis wc
てみました/usr/bin/wc
個々のユーティリティがどこにあるかを心配したくないが、呼び出しsystem
に伴うオーバーヘッドを避けたい場合は、中間レベルの関数execvp
またはその友人の1つ(このページにもリストされています)を試してください。悲しいことに、ありませんexecvpe
。
使用しているシェルに応じて、、、またはexecパス内の任意のプログラムを検索whence
できwhich
ます。whereis
のようなユーティリティwc
は通常、/bin
または、または/usr/bin
のような場所にあります。/usr/local/bin
/usr/site/bin