現在実行中のプロセスがわかっているとします。これを Java の Process オブジェクトに変換するにはどうすればよいでしょうか。プロセスは既に実行されているため、別のプロセスを生成する必要はありません。Java コード内で使用できる Process オブジェクトにプロセスをカプセル化したいだけです。次のようなもの:
int pid = getPid();
Process proc = magicGetProcess(pid);
ありがとう
組み込みライブラリのみを使用してこれが可能だとは思いません。私の知る限り、実行中のプロセスの独自の PID を取得することはすでに重要です (機能の要求と代替メカニズムを参照してください)。
java.lang.Process
このクラスを簡単に見てみると、java.lang.Process
JNI とネイティブ コードを使用して独自の実装を作成できることがわかります。カスタムクラスは、質問のような追加のメソッドを実装できます。
RMI を使用するとどうなりますか? Process オブジェクトを Process に渡すことは可能ですか? Process は Serializable ではないため、おそらくそうではありません
できません。Process 内のすべての操作では、プロセスが子プロセスである必要があります。恣意的なプロセスではありません。
* nix の世界では、子プロセス以外のプロセスの終了コードを取得するのは簡単ではありません。これは、親プロセスが子プロセスの終了コードを取得するとすぐに終了コードがプロセスと一緒に消えるためです。何らかのトレース ツールを使用して実行中のプロセスにアタッチし、プロセスが停止したときにその終了コードを取得できます。ほとんどの *nix OS には、非侵入的な方法でそれを実行できるコマンド ライン ツール (Linux の strace、SunOS の truss など) があります。ただし、独自のプロセスに対して、またはルートとして実行する場合にのみ使用できます。もう 1 つの方法は、OS の監査サブシステムを構成して、すべてのプロセスの終了コードを記録することです。