Windows에서 프로세스를 실행 중입니다. 이 프로세스는 배치 파일 "skrmedpostctl_start.bat"에 의해 시작됩니다. 나는 skrmedpostctl의 출력을 사용하는 자바 프로젝트를 작성 중이다. 나는 리눅스 플랫폼에서 작동하지만 Windows에서는 작동하지 않는다. 문제는 내가이 을 실행하기 전에 skrmedpostctl (Linux의 셸 스크립트, Windows의 배치 파일)입니다. 이미 실행 중인지 확인하고 있습니다. 이것은 내가 지금까지 무엇을 가지고 :Windows에서 배치 파일이 실행되고 있는지 확인하는 방법은 무엇입니까?
switch (CURRENT_OS) {
case LINUX:
String[] procCheck_SKR = new String[]{"/bin/bash", "-c", "ps -ef | grep MedPost-SKR"};
String[] procCheck_WSD = new String[]{"/bin/bash", "-c", "ps -ef | grep WSD_Server"};
try {
String procs_SKR = systemCall(procCheck_SKR);
String procs_WSD = systemCall(procCheck_WSD);
if (procs_SKR.split("\n").length < 2)
systemCall(new String[]{"/bin/bash", "-c", MM_BIN_DIR + "./skrmedpostctl start"});
if (procs_WSD.split("\n").length < 2)
systemCall(new String[]{"/bin/bash", "-c", MM_BIN_DIR + "./wsdserverctl start"});
} catch (IOException e) { e.printStackTrace(); System.exit(0); }
break;
case WINDOWS:
String[] procCheck = new String[]{"cmd.exe", "/c", System.getenv("windir") +"\\system32\\tasklist.exe"};
String pidInfo = "";
try {
Process proc = Runtime.getRuntime().exec(procCheck);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
for (String line; (line = reader.readLine()) != null;)
pidInfo += line;
reader.close();
} catch (IOException e) { e.printStackTrace(); System.exit(0); }
if (pidInfo.contains("NAME OF MY PROCESS")) {
// do stuff
}
break;
default: throw new IllegalArgumentException("Can't run this program on " + CURRENT_OS);
}
문제는 내가 배치 파일을 실행할 때, 작업 관리자는 실제 이름을 "윈도우 명령 프로세서"를 보여줍니다, 그리고 있다는 점이다. 그래서 리눅스에서 "ps -ef | grep ..."을 실행하여 이미 실행 중인지 확인하고 Windows에서 동일한 작업을 수행 할 수 없습니다. 이것을 할 수있는 방법이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 창의 제목을 반환 작업 목록 상세 모드 (/v
)에서
이미 시도했습니다. 도움이되지 않습니다. 추가 정보는 "C : \ Windows \ System32 \ cmd.exe"라고합니다. –
@ChthonicProject, 배치 파일에'title something' 명령을 찾으려는 경우 검색된 목록에 표시되지 않습니까? –
명령 프롬프트를 사용하여 배치 프로세스를 시작하면 창 제목에 "명령 프롬프트 - skrmedpostctl_start.bat"가 표시됩니다. 하지만 단순히 Runtime.getRuntime(). exec()을 사용하여 Java 코드에서 배치 파일을 더블 클릭하면 "C : \ Windows \ System32 \ cmd.exe"만 표시됩니다. –