5

ac プログラムで execve() の環境を指定する方法の具体例を見る必要があります。私のクラスでは、標準の LINUX 実行可能ファイルと独自の実行可能ファイルの両方を利用するプログラムを作成しています。したがって、PATH を検索する環境には、両方のタイプの実行可能ファイルのトークンが含まれている必要があります。どの記事でも execvp() または *clp() または *cl() などを代わりに使用するように提案されているため、execve() の環境 (3 番目の引数) を指定する方法の良い例を見つけることができません。

私のプロジェクトでは、execve() を使用する必要があります。

現在、基本的な「ls」コマンドで execve() を機能させようとしているだけなので、後ですべての実行可能ファイルで機能させることができます。

これが私の実験コードのスニペットです:

else if(strcmp(tokens[0], "1") == 0) {
    char *args[] = {"ls", "-l", "-a", (char *)0};
    char *env_args[] = {"/bin", (char*)0};
    execve(args[0], args, env_args);
    printf("ERROR\n");
    }

コマンド「1」をシェルに入力するたびに、エラー メッセージが表示されます。これは、env_args[] を宣言する方法が原因であると思われます。

指定されたコマンド検索環境で execve() を実装する方法の良い例を教えてもらえますか?

4

1 に答える 1