• ベストアンサー

Javaで自分のプロセスIDが取得したい

Java言語でバッチアプリケーションを製作しています。 "自分のプロセスIDと同じ名前のファイルを検索する"必要があるのですが、Javaでそのようなことができるのでしょうか。 自分のプロセスIDが"1234"だとしたら、対象ディレクトリの"1234"というファイルを検索するというようなものです。 OSはWindowsXPまたはHP/UXです。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25848&forum=12&4 辺りが参考になりそうです。WindowsとHP-UXのpidを取得するライブラリは自分で作成する必要がありますが。 WindowsならWin32APIのGetCurrentProcessId() http://yokohama.cool.ne.jp/chokuto/urawaza/api/ UNIXならgetpid()システムコール http://www.linux.or.jp/JM/html/LDP_man-pages/man2/getpid.2.html を使って、それぞれ上記サイトの解説で出てくるlibpid.soやpid.dllを作れば、できそうです。

ryou0607
質問者

お礼

ありがとうございます。 やってみます。

その他の回答 (1)

回答No.1

Windows XPならtasklistコマンド、HP/UXならpsコマンド (HP/UX、さわったことないので、間違ってたらごめんなさい。) の戻りから自身のプロセスIDが判断できれば良いんですけど… javaのプロセスが1つのみなら簡単でしょう。 複数ある場合は「どう抽出するか。」ですね。

ryou0607
質問者

補足

回答ありがとうございます。 同じ名前のプロセスが同時に複数起動していて、それぞれが自分のプロセスIDと同じ名前のファイルを検索するのです・・・ tasklistやpsコマンドからの戻りでそれらを抽出するのが非常に困難(というか不可能?)で、何か良い方法はないのかと思っている次第です。 検索対象となるファイルを作成するプログラムは、psコマンドで取得したプロセスIDの名前でファイルを作成するものなので、なんとかして自分のプロセスIDを取得しなければならないのです。。。。

関連するQ&A

  • プロセスIDからウィンドウハンドルを取得する方法

    以下の方法を調べていますが、プロセスIDからウィンドウハンドルを取得する方法がわかりませんでした。 (1)自分がCreateProcessで生成したプロセスのウィンドウハンドル (2)自分とは関係ないプロセスで、プロセスIDだけ判明しているプロセスのウィンドウハンドル ご存知の方、ご教授願います。 <環境> WindowsXP VC++6.0

  • Java (ジャバ)

    Java とは、使っているパソコンの機種に依存しないプログラム言語のこと。 ネットで扱われているJavaは、大きく分けてJavaスクリプトとJavaアプレットの2種類。 script・・・手書き、筆記、台本、原稿 applet・・・別のアプリケーションを動かしているときに呼び出せる小さなアプリケーションプログラム なのだそうですがよくわかりません。 素人でもわかる説明となるとどうなるでしょうか? お願いします。

  • javaコンパイルバッチ

    javaコンパイル用のバッチファイルを作成しようと思ってますがうまくいきません。どなたかご教授お願いします。 環境 windowsXP java j2sdk1.4.2_16 バッチファイル名 jc.bat 作成したバッチファイルの中身 set PATH=.;C:\JAVA\j2sdk1.4.2_16\bin;C:\JAVA\j2sdk1.4.2_16\jre\bin;C:\JAVA\j2sdk1.4.2_16\lib set CLASSPATH=.;C:\JAVA\j2sdkee1.3.1\lib\j2ee.jar;C:\JAVAsrc javac 実行 C:\JAVAsrc> jc testServlet.java これで作ってみたのですが動きません、実行してみると どうやらjacacの実行結果(使用方法の説明)がでてきました ただ、バッチファイルの最後にjavac testServlet.javaと入れて C:\JAVAsrc> jc 実行してみると、コンパイルができてるのです。 どなたか、原因はわかりますか? それと環境変数は通ってました。 javacの後のtestServlet.javaが認識されてないみたいです

  • javaを使用しています。

    Java初心者です。Javaのバージョンは6で、Program Fileの中にインストールしました。 現在、Javaを使用しているのですがコンパイルの実行をするために javac ソースファイル名を入力したのですが、「Javacは内部コマンドまたは外部コマンド 操作可能なプログラムまたはバッチファイルとして認識されていません」と出ます。この場合、なにが原因だと思いますか? 後、ディレクトリを移動するためにCドライブにファイルを作りました。 メモ帳を使用し、ソースファイルを作成し、ファイル名はSample1.javaとしましたが、このファイルを保存するときは作成したディレクトリに保存すればいいのでしょうか?

    • ベストアンサー
    • Java
  • 自分で作ったJavaアプリケーションをデスクトップに置ける?

     自分で作成したJavaアプリケーションを他の市販のソフトみたいにデスクトップにショートカットを作成したいのですが。。。    バッチファイルでそれをしようと思ったのですがチェンジディレクトリをしてからでないとできないので、できませんでした。  WinXPにしてからDOSのプロパティからカレントディレクトリを設定できないのですが、そんなもんなんですか?  Dosでカレントディレクトリがプロパティから設定できればバッチファイルでプログラムを起動できるのですが。。。  あとバッチファイルで cd c:\WebServerって書いて、それをダブルクリックしてもすぐDos画面が閉じてしまうんですが、ずーと開いたままにはできないのでしょうか?

    • ベストアンサー
    • Java
  • ServletからバックグラウンドでJavaを走らせたい

    Javaのバッチをコマンドラインからでなく、Servletから非同期で走らせたいのですが、うまくいきません。 多数サイトを見ましたが引数なしの場合でも、JavaをServletのバックグラウンドで走らせる事はできませんでした。5時間はまっています(T_T) Process process = Runtime.getRuntime().exec("java C:\\java\\src\\batch\\testJava argv01 argv02"); ■環境は、JDK1.4.1、Tomoat4.1.6、Windos2000で、 javaを打ち間違えたら、例外が発生したのでjavaだけはとりあえずパスがとおっているようです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaが起動しません

    http://www.java.com/ja/ というサイトに行って「無料javaのダウンロード」から ダウンロード→インストール を完了しました。 結果、現在「プログラムの追加と削除」には 「java(TM)6 Update3」というものが追加されました。 他に「java」と名の付くプログラムは見あたりません。 そして他のHPにある、javaで起動するプログラムを クリックすると 「このアプリケーションを起動できません」 というメッセージが出ます。 しかし、http://www.java.com/ja/ にある「インストール確認」で確認しますと 「Java のバージョンを確認しました。正常な設定です。 お使いのオペレーティングシステムに推奨されたバージョン (Version 6 Update 3) の Java がインストールされています。 」 というメッセージが出ます。 私の環境ですが OSはWindowsXP SP2 IEは6.0 SP2 です。 また、他のjava関連のサイトを参考に環境変数も変更しました。 変数名:PATH 変数値:C:\Program Files\Java\jre1.6.0_03\bin に変更済みです。 それからcommandで「javac」と入力しましたら 「操作可能なプログラムまたはバッチファイルとして認識されていません」 と出ます。 どのようにしたらjavaが実行出来るのでしょうか? どなたかお教え下さい。

  • javaインストールにつきまして

     質問させていただきます.どうぞよろしくお願いいたします.  環境:Win7 64bit になります。  今ネットから落としてきたjavaのソースコードファイル(.java)を コンパイルしてみたいのですが、CとVB(両方共ちょっとだけです)しか 経験がなく、やり方が分かりません。。 検索しておりまして、 http://java.sun.com/j2se/1.5.0/ja/download.html のどれかをDLする(?)のかなと思うのですが、 試しに「JDK 5.0 Update 22」を DL→インストール→再起動といたしまして、 CMDで「java sample.java」や「javac sample.java」と打ちましても 「’java’は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されてしまいます。  もしお詳しい方がいらっしゃいましたら,お教えいただきたく どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • Java(サーブレット)コンパイル用バッチファイルの作成

    Java(サーブレット)コンパイル用バッチファイルの作成 Java(サーブレット)コンパイル用バッチファイルの作成を以下のサンプルファイルを見ながら行いました。 @set CLASSPATH=C:\servletbook\apache-tomcat\common\lib\servlet-api.jar javac -sourcepath src -d classes src/%1 そもそもバッチファイルがよく分かっていないのですが、ヒントを頂きたいと思い質問します。 このバッチファイルを使用して、srcディレクトリ内のxxx.javaファイルのコンパイルは出来るのですが、src/fooディレクトリ内のxxx.javaファイルもコンパイルするためにはバッチファイルソースのどこを変更すれば良いでしょうか? また、src配下のすべてのディレクトリ内にあるxxx.javaファイルをコンパイル出来るようにするにはどうすれば良いでしょうか? ご教授をお願いします。<(_ _)>

    • ベストアンサー
    • Java
  • Java 特定プロセス名前取得方法について

    Java 特定プロセス名前取得方法について こんにちわ。 昨日に引続きまた質問させてください。 Javaで特定のプロセス名(OpenOfficeのプロセス名:soffice.exeだったかな?)を取得したいのですが、何か良い方法は無いでしょうか? 環境 eclipse3.5 jdk1.5 jooconverter.jar openoffice1.4 やりたいこと ・ExcelからPDFにファイル内容を丸ごと変換(jooconverter.jar、openofficeを使用) ・どうやら、openofficeのコネクタを取得しなければ、変換出来ない為Thrad.sleep()で若干とめてます。 ・その止めるのを毎回ではなく、1日1回若しくはopenofficeが起動していない時だけにしたいのです。 こんな感じでやりたい ~中略~ // プロセス名取得 String pName = …; // openofficeが起動しているかのチェック if (pName.equals("")) {     // openoffice起動     ~中略~ // 処理を一旦停止         Thread.sleep(60000); } // コネクト接続処理 ~中略~ // 変換処理 ~中略~ 補足 何故プロセスIDではないかというと、ネットで調べたら固定ではなく、毎回変動するようなので名前がいいなーと思いました。 もし、変動ではなく固定にすることが出来るなら、IDも可能です。 どなたか分かる方、ご教授頂けましたら幸いです。

    • ベストアンサー
    • Java

専門家に質問してみよう