問題:多数の異なるバックグラウンドJavaアプリケーションを開始するとき、ps / topを使用するときにそれらを識別する問題があります。 その結果、「java」という名前のプロセスが多数ありますが、これは便利ではありません。
この問題にはいくつかの解決策があります。
- JNIラッパーの作成
- 自分の決断
この問題を次のように解決しました
int main(int argc、char ** argv) { char * java_home = getenv( "JAVA_HOME"); const char * java_bin_affix = "/ bin / java"; if(java_home == NULL){ printf( "JAVA_HOMEが設定されていません!終了しています"); exit(1); } else { int length = strlen(java_home)+ strlen(java_bin_affix)+ 1; char * java_bin =(char *)malloc(長さ); memset(java_bin、0、長さ); strcat(java_bin、java_home); strcat(java_bin、java_bin_affix); execv(java_bin、argv); } }
このコードを使用すると、現在のプロセスのargvを置換に渡すことにより、プロセス名「java」を独自のものに置き換えることができます。 この場合、すべての引数はJVMチェーンに沿って渡されます。
execvは、execファミリの残りの関数と同様に、現在のプロセスのイメージを上書きし、開始プロセスと置換プロセスのpidが一致するようにします。
このようなラッパープロセスリストを介してJavaアプリケーションを起動すると、次のようになります。
#ps ax | grep my_daemon
27061ポイント/ 3 Sl + 0:00 ./my_daemonテスト
この結論は、複数の「java」よりもはるかに有用です。