Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Java检测特定进程是否在Windows下运行?_Java - Fatal编程技术网

如何通过Java检测特定进程是否在Windows下运行?

如何通过Java检测特定进程是否在Windows下运行?,java,Java,好吧,这个标题很好地概括了这个问题。我唯一发现的是 但我不确定这是不是一条路。os.name应该这样做。更多信息取决于您需要了解的内容 大多数信息都可以从默认运行时属性派生,而无需实际检查操作系统属性 看一看提供了什么: java.version Java Runtime Environment version java.vendor Java Runtime Environment vendor java.vendor.url Java vendor URL java.home Ja

好吧,这个标题很好地概括了这个问题。我唯一发现的是
但我不确定这是不是一条路。

os.name应该这样做。更多信息取决于您需要了解的内容

大多数信息都可以从默认运行时属性派生,而无需实际检查操作系统属性

看一看提供了什么:

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

您正在尝试确定您创建的进程是否仍在运行

  • 如果你有PID,你发布的链接就可以了
  • 如果另一个进程也是你自己的(你的代码),你可以让它获得文件的独占锁;如果其他进程未运行,则尝试将其从其他代码锁定

  • 我没有在非基于Windows的系统中尝试过。 也许PID除以4可以提供一个线索 有关此PID属性的详细信息,请单击此处:

    这里呢

    您可以使用wmic实用程序检查正在运行的进程列表。
    假设要检查windows的explorer.exe进程是否正在运行:

    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();
    }
    

    请参阅或,以获取您可以从wmic获得的信息的一些示例…

    模棱两可的问题。您想知道Windows进程是否是java应用程序,还是想知道java应用程序如何判断它是否在Windows上运行?您需要使用什么?进程ID?可执行文件的名称?你开始这个过程了吗?你在等着看它是否完成了吗?基本上你为什么要检查它是否在运行。根据不同的情况有不同的技巧。@Stephen C你完全正确,我还不够清楚!我想知道如何以编程方式查看例如notepad.exe是否正在运行或firefox.exe是否正在运行等。。。希望能澄清这一点:)谢谢你,正如我在早些时候的评论中所说,我还不够清楚那么,是否有可能从windows句柄id中找出如何终止正在运行的进程?谢谢您提供了一个很好的示例。有没有办法独立处理这个问题?我在Linux和Apple下也需要这个功能。