0

おそらくこれは魔法の問題です。次のシグネチャ(または同等のconst char * const * args)を持つ関数を作成しようとしています

void ExecuteJavaVM(char** args){
 
}

配列の要素の最大数を入力する必要がないexecvことをご存知かもしれませんが、パラメーターの配列をどのように処理するかをエミュレートしたいと思います。execv2番目のパラメーターとして渡す配列内の要素の数を魔法のように数えます。

これはexecv署名です。

intptr_t _execv( 
   const char *cmdname,
   const char *const *argv 
);

どういうわけか、execvは配列argv内の要素の数を「カウント」することができます。これはまさに私がやろうとしていることです。

sizeof配列のデータ型は単純なポインタに減衰するため、ほとんど役に立たないため、ほとんどのsizeof場合、常に4が返されます。

何か案は?Windows用のこれらの関数のソースがどこにあるか知っている人はいますか?

4

1 に答える 1

9

POSIXドキュメント(強調鉱山)から:

引数argvは、nullで終了する文字列への文字ポインタの配列です。アプリケーションは、この配列の最後のメンバーがnullポインターであることを確認する必要があります。これらの文字列は、新しいプロセスイメージで使用可能な引数リストを構成するものとします。の値argv[0]は、exec関数の1つによって開始されているプロセスに関連付けられているファイル名を指している必要があります。

于 2012-08-30T20:04:51.083 に答える