X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Futil%2FOS.java;fp=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Futil%2FOS.java;h=d8127b6007e25e63ce52cbe6090839fd91026cfd;hb=fba24f5ac520b99b3ac75781c95f11c48ac6252f;hp=0000000000000000000000000000000000000000;hpb=3fbd05aa39ef235128e134fde8fd24167208e781;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.enterprise/src/org/argeo/util/OS.java b/org.argeo.enterprise/src/org/argeo/util/OS.java new file mode 100644 index 000000000..d8127b600 --- /dev/null +++ b/org.argeo.enterprise/src/org/argeo/util/OS.java @@ -0,0 +1,56 @@ +package org.argeo.util; + +import java.io.File; +import java.lang.management.ManagementFactory; + +/** When OS specific informations are needed. */ +public class OS { + public final static OS LOCAL = new OS(); + + private final String arch, name, version; + + /** The OS of the running JVM */ + protected OS() { + arch = System.getProperty("os.arch"); + name = System.getProperty("os.name"); + version = System.getProperty("os.version"); + } + + public String getArch() { + return arch; + } + + public String getName() { + return name; + } + + public String getVersion() { + return version; + } + + public boolean isMSWindows() { + // only MS Windows would use such an horrendous separator... + return File.separatorChar == '\\'; + } + + public String[] getDefaultShellCommand() { + if (!isMSWindows()) + return new String[] { "/bin/sh", "-l", "-i" }; + else + return new String[] { "cmd.exe", "/C" }; + } + + public static Integer getJvmPid() { + /* + * This method works on most platforms (including Linux). Although when Java 9 + * comes along, there is a better way: long pid = + * ProcessHandle.current().getPid(); + * + * See: + * http://stackoverflow.com/questions/35842/how-can-a-java-program-get-its-own- + * process-id + */ + String pidAndHost = ManagementFactory.getRuntimeMXBean().getName(); + return Integer.parseInt(pidAndHost.substring(0, pidAndHost.indexOf('@'))); + } +}