0

execveコマンドを使用しようとすると、最後の2つの引数に関するエラーが表示されます。

     #include <unistd.h>        
     const char * c = enviorment.c_str();
     execve(full.c_str() , cl.getArgVector(), c);

次のような文字列をコピーする際に、いくつかの異なるオプションを使用してみました。

char *temp2 = new char[(path).size()+1];
strcpy ( temp2, cl.getCommand());
    execve(full.c_str() , cl.getArgVector(), temp);

しかし、それを機能させてエラーメッセージを受け取ることができません:

エラー:引数3のchar*をchar* const*に変換できませんintexecve(const char *、char * const *、char * const *)

4

1 に答える 1

0

環境変数配列は、1つの文字列ではなく、文字列(char *)の配列です。配列の最後の要素としてNULL値が必要です。

c1.getArgVector()の実装に使用しているコードを模倣して、配列の最後のchar*がNULLであることを確認します。

于 2013-03-27T03:24:18.733 に答える