これは切り株です。ユーザーがいくつかのコマンドを実行できるようにするシェルプログラムを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