ProcessBuilder와 Runtime.exec()의 차이점 이해
Java 코드에서 외부 명령을 실행할 때 개발자는 종종 두 가지 일반적인 방법을 접하게 됩니다. Runtime.getRuntime().exec(...) 및 새 ProcessBuilder(...).start(). 이러한 방법은 유사해 보이지만 명령 실행에 영향을 미칠 수 있는 주요 차이점이 있습니다.
오버로딩 및 토큰화
Runtime.exec()는 단일 문자열과 토큰화를 모두 제공합니다. 배열 과부하. 단일 문자열 오버로드를 사용하는 경우 제공된 문자열은 인수 배열로 토큰화됩니다. 이 토큰화 동작은 ProcessBuilder에 적용되지 않습니다. ProcessBuilder 생성자는 각 문자열이 개별 인수를 나타낸다고 가정할 때 varargs 배열 또는 문자열 목록만 허용합니다.
명령 실행에 미치는 영향
예를 들어 이 차이점을 살펴보겠습니다. Windows에서 다음 Runtime.exec() 호출:
Runtime.getRuntime().exec("C:\DoStuff.exe -arg1 -arg2");
은 "-arg1" 및 "-arg2" 인수를 사용하여 "DoStuff.exe" 프로그램을 실행합니다. 토큰화는 명령이 올바르게 구문 분석되도록 보장합니다.
반대로, "DoStuff.exe -arg1 -arg2"라는 프로그램이 C: 디렉터리에 존재하지 않는 한 다음 ProcessBuilder 호출은 실패합니다.
ProcessBuilder b = new ProcessBuilder("C:\DoStuff.exe -arg1 -arg2");
ProcessBuilder를 사용하여 명령을 올바르게 실행하려면 인수를 별도로 제공해야 합니다.
ProcessBuilder b = new ProcessBuilder("C:\DoStuff.exe", "-arg1", "-arg2");
또는 목록을 사용해야 합니다.
List<string> params = java.util.Arrays.asList("C:\DoStuff.exe", "-arg1", "-arg2"); ProcessBuilder b = new ProcessBuilder(params);</string>
오류 처리에 대한 의미
명령 토큰화의 차이는 오류 처리에 영향을 줄 수 있습니다. 예를 들어 ProcessBuilder가 지정된 프로그램을 찾지 못하면 예상되는 종료 값 0 대신 오류 코드 1001이 표시될 수 있습니다. Runtime.exec() 및 ProcessBuilder의 토큰화 동작을 이해하는 것은 이러한 오류를 디버깅하는 데 중요합니다.
위 내용은 ProcessBuilder와 Runtime.exec(): 언제 외부 명령을 실행하기 위해 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
