0

system() 関数を使用して Java .jar ファイルを起動するコンパイル済み C アプリケーションを作成中です。

int main() {
  system("java -jar MyJar.jar");
  return 0;
}

これをクリック可能なアプリ バンドルにうまくまとめましたが、ダブルクリックすると、jar を起動する直前にアプリケーションが終了します。ただし、コマンド ラインからコンパイル済みの C コードを実行すると、完全に機能します。

どんな洞察もいただければ幸いです!

スコット

4

1 に答える 1

1

アプリケーションがすぐに終了する理由は、次の行のためです。

return 0;

execの代わりに使用したいでしょうsystem。ではexec、プログラムは Java プロセスに置き換えられ、return 0;ラインに到達する機会はありません。ただし、C プログラム全体をシェル スクリプトに置き換える方がはるかに簡単です。

#!/bin/sh
exec java -jar MyJar.jar

書かれているように、私が考えることができるこのアプローチには欠点はありません。C プログラムは既にシェル プロセスを生成しています (それが実行することsystemです)。

多くのアプリケーション バンドルは、シェル スクリプトを使用してこのようなことを行います。

于 2012-08-09T13:45:46.447 に答える