컴퓨터 종료
내장 된 Java 메소드를 사용하여 컴퓨터를 종료하는 방법이 있습니까?
명령 줄을 통해 OS 명령 을 실행하는 자신 만의 기능을 만드 시겠습니까?
예를 들어. 그러나 다른 사람들이 메모 할 때 이것을 어디에, 왜 사용하고 싶은지 아십시오.
public static void main(String arg[]) throws IOException{
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("shutdown -s -t 0");
System.exit(0);
}
다음은 크로스 플랫폼에서 작동 할 수있는 또 다른 예입니다.
public static void shutdown() throws RuntimeException, IOException {
String shutdownCommand;
String operatingSystem = System.getProperty("os.name");
if ("Linux".equals(operatingSystem) || "Mac OS X".equals(operatingSystem)) {
shutdownCommand = "shutdown -h now";
}
else if ("Windows".equals(operatingSystem)) {
shutdownCommand = "shutdown.exe -s -t 0";
}
else {
throw new RuntimeException("Unsupported operating system.");
}
Runtime.getRuntime().exec(shutdownCommand);
System.exit(0);
}
특정 종료 명령에는 다른 경로 또는 관리 권한이 필요할 수 있습니다.
다음은 Apache Commons Lang의 SystemUtils 를 사용하는 예입니다 .
public static boolean shutdown(int time) throws IOException {
String shutdownCommand = null, t = time == 0 ? "now" : String.valueOf(time);
if(SystemUtils.IS_OS_AIX)
shutdownCommand = "shutdown -Fh " + t;
else if(SystemUtils.IS_OS_FREE_BSD || SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC|| SystemUtils.IS_OS_MAC_OSX || SystemUtils.IS_OS_NET_BSD || SystemUtils.IS_OS_OPEN_BSD || SystemUtils.IS_OS_UNIX)
shutdownCommand = "shutdown -h " + t;
else if(SystemUtils.IS_OS_HP_UX)
shutdownCommand = "shutdown -hy " + t;
else if(SystemUtils.IS_OS_IRIX)
shutdownCommand = "shutdown -y -g " + t;
else if(SystemUtils.IS_OS_SOLARIS || SystemUtils.IS_OS_SUN_OS)
shutdownCommand = "shutdown -y -i5 -g" + t;
else if(SystemUtils.IS_OS_WINDOWS)
shutdownCommand = "shutdown.exe /s /t " + t;
else
return false;
Runtime.getRuntime().exec(shutdownCommand);
return true;
}
이 방법은 위의 답변보다 훨씬 많은 운영 체제를 고려합니다. 또한 os.name
속성 을 확인하는 것보다 훨씬 더 멋지고 신뢰할 수 있습니다.
편집 : 지연 및 모든 Windows 버전 (8/10 포함)을 지원합니다.
The quick answer is no. The only way to do it is by invoking the OS-specific commands that will cause the computer to shutdown, assuming your application has the necessary privileges to do it. This is inherently non-portable, so you'd need either to know where your application will run or have different methods for different OSs and detect which one to use.
I use this program to shutdown the computer in X minutes.
public class Shutdown {
public static void main(String[] args) {
int minutes = Integer.valueOf(args[0]);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
ProcessBuilder processBuilder = new ProcessBuilder("shutdown",
"/s");
try {
processBuilder.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}, minutes * 60 * 1000);
System.out.println(" Shutting down in " + minutes + " minutes");
}
}
Better use .startsWith than use .equals ...
String osName = System.getProperty("os.name");
if (osName.startsWith("Win")) {
shutdownCommand = "shutdown.exe -s -t 0";
} else if (osName.startsWith("Linux") || osName.startsWith("Mac")) {
shutdownCommand = "shutdown -h now";
} else {
System.err.println("Shutdown unsupported operating system ...");
//closeApp();
}
work fine
Ra.
You can use JNI to do it in whatever way you'd do it with C/C++.
On Windows Embedded by default there is no shutdown command in cmd. In such case you need add this command manually or use function ExitWindowsEx from win32 (user32.lib) by using JNA (if you want more Java) or JNI (if easier for you will be to set priviliges in C code).
easy single line
Runtime.getRuntime().exec("shutdown -s -t 0");
but only work on windows
참고URL : https://stackoverflow.com/questions/25637/shutting-down-a-computer
'Programing' 카테고리의 다른 글
열거 형 값을 SelectList로 가져 오는 방법 (0) | 2020.11.16 |
---|---|
Spring MVC Controller에서 IP 주소를 추출하는 방법은 무엇입니까? (0) | 2020.11.16 |
Android / FBReaderJ / gen이 이미 존재하지만 소스 폴더가 아닙니다. (0) | 2020.11.16 |
Laravel-보기 위해 둘 이상의 변수 전달 (0) | 2020.11.16 |
mysql-python 설치 오류 : 'config-win.h'포함 파일을 열 수 없습니다. (0) | 2020.11.16 |