-2
私が見ている限り明確に理解されていないので、問題を書き直しています。私はC言語で独自のシェルを実装しています。このシェルは元のコマンドをサポートする必要があります。 がはすでにあなたが簡単にことをやらせるexecvp()
またはsystem()
機能を使用せずにC内のすべての既存のUNIXのbashコマンドを実行するCで端末上のコマンドのexecファイルのディレクトリを取得する方法は?
問題があります。
これを行うには、すべての種類のUNIXコマンドからなる必要なすべてのディレクトリを検索する必要があります。
PATH
環境変数のすべてのディレクトリをチェックしたときに、どのディストリビューションでもすべてのUNIXコマンドがサポートされていることは本当に確かですか? (私のマシンで/bin/
なり、/usr/bin/
、/usr/local/bin
)
は、私はまた、あなたがrealpath()と呼ば挿入したファイルの完全なディレクトリを取得する方法を発見しました。しかし残念ながら、自分のシェルに挿入されたコマンドのディレクトリを取得しようとすると(null)
を返します。
この問題を解決するには、他に何を提案しますか?最後の解決策として、コマンドを挿入するためにルートから再帰的にコンピュータ全体を検索するのは意味がありますか?
不明な点がある場合は、わかりやすくお知らせください。私はあなたがそれが今から明確に記述されていると思うなら、あなたはサンプルコードで答えることができ、質問の中で[保留]タグをクリアすることができれば非常に感謝します。
ありがとうございます!
あなたは 'PATH'ディレクトリのリストenvで到達可能なファイルを探しますか?変数。 –
ヒント: '/ bin'は' PATH'システム変数にあります。 –
@ Jean-FrançoisFabreあなたは私にPATH環境の内容を探すことを提案しますか?変数?もしそうなら、すべての可能なUNIXコマンドがPATHシステム変数内にのみ存在することを確認できますか? –