How to detect via Java whether a particular process is running under Windows?

后端 未结 5 660
南笙
南笙 2020-12-06 17:58

Well the title pretty much sums the question. The only thing I found is this but I\'m not sure if thats the way to go.

相关标签:
5条回答
  • 2020-12-06 18:27

    You are trying to determine if a process you created is still running?

    1. If you have the PID the link you posted will do.
    2. If the other process is also your own (your code), you can make it get exclusive lock on a file; try locking it from the other code if it succeeds the other process is not running.
    0 讨论(0)
  • 2020-12-06 18:38

    os.name should do it. More information here

    0 讨论(0)
  • 2020-12-06 18:44

    I have not tried in non Windows based systems. perhaps the PID divisibility by 4 will provide a clue More info on this PID propery here : About the pid of the process

    and here http://blogs.msdn.com/oldnewthing/archive/2008/02/28/7925962.aspx

    0 讨论(0)
  • 2020-12-06 18:46

    You can use the wmic utility to check the list of running processes.
    Suppose you want to check if the windows' explorer.exe process is running :

    String line;
    try {
        Process proc = Runtime.getRuntime().exec("wmic.exe");
        BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        OutputStreamWriter oStream = new OutputStreamWriter(proc.getOutputStream());
        oStream .write("process where name='explorer.exe'");
        oStream .flush();
        oStream .close();
        while ((line = input.readLine()) != null) {
            System.out.println(line);
        }
        input.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }
    

    See http://ss64.com/nt/wmic.html or http://support.microsoft.com/servicedesks/webcasts/wc072402/listofsampleusage.asp for some example of what you can get from wmic...

    0 讨论(0)
  • 2020-12-06 18:51

    Depends on what you need to know it for!

    Most information can be derived from the default runtime properties, without actually checking the operating system properties.

    Have a look at what http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties() provides:

    java.version    Java Runtime Environment version
    java.vendor Java Runtime Environment vendor
    java.vendor.url Java vendor URL
    java.home   Java installation directory
    java.vm.specification.version   Java Virtual Machine specification version
    java.vm.specification.vendor    Java Virtual Machine specification vendor
    java.vm.specification.name  Java Virtual Machine specification name
    java.vm.version Java Virtual Machine implementation version
    java.vm.vendor  Java Virtual Machine implementation vendor
    java.vm.name    Java Virtual Machine implementation name
    java.specification.version  Java Runtime Environment specification version
    java.specification.vendor   Java Runtime Environment specification vendor
    java.specification.name Java Runtime Environment specification name
    java.class.version  Java class format version number
    java.class.path Java class path
    java.library.path   List of paths to search when loading libraries
    java.io.tmpdir  Default temp file path
    java.compiler   Name of JIT compiler to use
    java.ext.dirs   Path of extension directory or directories
    os.name Operating system name
    os.arch Operating system architecture
    os.version  Operating system version
    file.separator  File separator ("/" on UNIX)
    path.separator  Path separator (":" on UNIX)
    line.separator  Line separator ("\n" on UNIX)
    user.name   User's account name
    user.home   User's home directory
    user.dir    User's current working directory
    
    0 讨论(0)
提交回复
热议问题