クラス プロジェクトの一部として、C で独自のシェルを構築しようとしています。execv を使用し、独自のパスを実装する必要があります。理解を深めるために、次の質問があります。
パスのリストはデフォルトでは空ですが、任意のサイズに拡張できます。この変数を制御するには、組み込みコマンドを実装する必要があります。
path [+|- /some/dir]
path
(引数なし) リスト内のすべてのエントリをコロンで区切って表示します (例: "/bin:/usr/bin")。
path + /some/dir
指定されたパス名をパス リストに追加します。
path - /some/dir
指定されたパス名をパス リストから削除します。
私は割り当てを読み違え、これまで execvp を使用してきました。独自のパス変数を作成する方法と、実行されたコマンドごとに、そのディレクトリを検索してパスに追加する方法を教えてください。または、私が見ることができる execv を使用して書かれた単純なシェルはありますか?
http://linuxgazette.net/111/ramankutty.htmlを見ましたが、検索が少し複雑すぎることがわかり、彼は execve を使用しています。
これまでのところ、最初は null の char *mypath 変数があります。ただし、ユーザーはパス + some/dir またはパス - /some/dir を使用して追加または削除できます。execv の構文は execv("/some/dir", argv) です。実行可能ファイルのパスを検索して execv に渡すにはどうすればよいですか?たとえば mypath=/bin/ls ; execv(mypath, argv) を渡すと機能しません...では、execv にパスを渡すにはどうすればよいですか?