* nixの下のJavaアプリケーションのミニラッパー

すべての良い一日。



問題:多数の異なるバックグラウンドJavaアプリケーションを開始するとき、ps / topを使用するときにそれらを識別する問題があります。 その結果、「java」という名前のプロセスが多数ありますが、これは便利ではありません。



この問題にはいくつかの解決策があります。

  1. JNIラッパーの作成
  2. 自分の決断


この問題を次のように解決しました



 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」よりもはるかに有用です。



All Articles