Process 클래스를 통해 C# app에서 일부 배치 파일을 시작합니다. 이 파일은 자바 응용 프로그램을 시작했습니다. 이 응용 프로그램을 중지하려면 java.exe라는 프로세스를 kill해야합니다. 그 (것)들을 전부 죽이기보다는 몇몇 더 우아한 방법 있는가, 나가 맞은 것을 끝내고 다른 중요한 자바 app를 죽이지 않는다는 것을 희망한다? 제가 정말로 거기에 붙어있는 도움을 주셔서 감사합니다.살인 프로세스 java.exe
건배, 앤드류
Process 클래스를 통해 C# app에서 일부 배치 파일을 시작합니다. 이 파일은 자바 응용 프로그램을 시작했습니다. 이 응용 프로그램을 중지하려면 java.exe라는 프로세스를 kill해야합니다. 그 (것)들을 전부 죽이기보다는 몇몇 더 우아한 방법 있는가, 나가 맞은 것을 끝내고 다른 중요한 자바 app를 죽이지 않는다는 것을 희망한다? 제가 정말로 거기에 붙어있는 도움을 주셔서 감사합니다.살인 프로세스 java.exe
건배, 앤드류
편집 : 나는 배치 파일 부분을 놓쳤다. 이 대답은 C#에서 직접 프로세스를 시작할 수있는 경우에만 유용합니다 ...
프로세스를 시작할 때 프로세스 ID를 저장할 수 있으므로 프로세스를 나중에 다시 가져올 수 있습니다.
Process p = new Process();
//set all the process start Info...
p.Start();
someVariableICanGetToLater = p.Id
//Later when you need to kill the process...
Process pToKill = Process.GetProcessById(someVariableICanGetToLater);
pToKill.Kill();
그는 Java 프로세스가 시작되고 있다는 것을 알지 못해서 코드가 어디에 있는지를 알지 못하거나 소스를 사용할 수 없을 수도 있습니다. –
배치 파일이 Java 응용 프로그램을 시작하기 때문에 배치 파일 프로세스의 ID를 알면 도움이되지 않는다고 가정합니다.
Process.GetProcessesByName("java")
은 모든 java.exe 인스턴스의 목록을 제공합니다.
그는 C# 응용 프로그램과 자바 프로세스 사이의 부모 자식 관계를 쿼리해야합니다. 이 코드를 게시 할 수 있습니까? : P –
의사 코드. 여기에 OS 특정 호출을 입력하십시오 :
int cs_pid=getProcessByName("CSharpAppName");
int javaPid[]= getProcessByName("JavaAppName");
bool javaToCSharpRelationship[]=new bool[javaPid.size];
int loopCounter=0;
forEach int in javaPid
begin
if(isChildOf(cs_pid,java_pid))
begin
// OS call or Wrapper to determine relationship between c# pid
// and Java app PID
javaToCSharpRelationShip[loopCounter]=true;
//can call kill here if you like
end
else
javaToCSharpRelationShip[loopCounter]=false;
loopCounter++;
end
이 코드의 끝에서 C# 응용 프로그램의 자식 인 배열을 가져야합니다. 배치 파일이 일을 많이하지 않는
안녕, 정말 재미있어 보여. isChildOf 메서드에 몇 가지 힌트를 줄 수 있습니까? – Andrew
만 .NET의 Process
및 ProcessStartInfo
클래스를 사용하여 달성하기 어려운 또 다른 옵션은 직접 java.exe를 시작하고 ProcessStartInfo
의 Arguments
및 EnvironmentVariables
속성을 통해 인수와 환경 변수를 제어하는 것 .
그런 다음 Jason의 접근 방식을 사용하여 java.exe 프로세스 'id를 저장하여 나중에 죽일 수 있습니다.
Java.app와 C# 응용 프로그램간에 OS가 부모 - 자식 관계를 유지해야합니다. 당신이 창문에 있다고 생각하니? 왜이 Java 프로세스를 죽이려고합니까? –
예 Iam on windows. Java 프로세스는 C# 응용 프로그램에서 사용자가 시작합니다. 그를 위해 계산을합니다. 사용자가 계산을 멈추기로 결정했다면 자바 애플리케이션을 죽여야한다. 왜냐하면 엄청난 양의 데이터를 처리하기 때문에 시간이 많이 걸리기 때문이다. 감사. 나는 그것을 테스트 할 부모 - 자식 관계의 유지를 발견했다. – Andrew