2009-10-20 3 views
1

UseShellExecute를 false로 설정하고 파일 삭제를 허용하는 C#에서 하위 프로세스를 호출하려면 어떻게해야합니까?자식 프로세스 내에서 파일을 삭제할 수 없다 C# App

자식 프로세스는 0 바이트 파일을 생성하여 원격 서버로 전송하고 삭제합니다. 이 기능은 Windows 명령 행에서 Java 프로그램을 실행할 때 작동합니다.

StartInfo.UseShellExecute를 false로 설정하여 System.Diagnostics.Process 인스턴스를 사용하여 C#에서 java 프로그램을 호출하면 자식 프로세스가 파일을 삭제하지 않습니다. 사실, 처리가 중지되고 아무 일도 일어나지 않습니다. Process 개체의 StartInfo.UseShellExecute 속성이 true로 설정되면 자식 프로세스가 파일을 삭제할 수 있으며 부모 프로세스의 실행이 진행됩니다. 그러나 UseShellExecute 속성을 false로 설정해야 자식 프로세스의 출력을 리디렉션 할 수 있습니다.

+0

Java 프로세스가 파일 삭제에 도달하기 전에 스톨 중임을 발견했습니다. 자세한 내용은 아래 Tim의 답변에 대한 내 의견을 참조하십시오. 내가 가지고있는 새로운 정보를 바탕으로이 게시물을 삭제해야합니까? – ecruz3

+0

문제가 파일 삭제와 관련이없는 경우 질문이 더 이상 정확하지 않습니다. 당신은 단지 그것을 편집 할 수는 있지만, 완전히 바꿀 것이기 때문에 그냥 삭제하고 새로운 것을 만들어서 "새로운"섹션에 나타나게하는 것이 낫습니다. –

답변

0

소리가 원인 같습니까?

http://hackage.haskell.org/trac/ghc/ticket/2650

(또는,보다 구체적으로 Java issue 거기에서 연결)

내가 얼마 전에 비슷한 문제로 실행하고, 예기치 않은 핸들 상속에 의한 것으로 밝혀졌다,하지만 난 돈 그것이 당신이 묘사하는 문제를 어떻게 일으키는 지 알 수 없습니다.

+0

내 질문을 게시 한 후, 나는 그것을 삭제하기 전에 자바 프로세스가 실속하고 있다는 것을 발견했다! 로깅 문을 삽입하므로 하위 프로세스를 디버깅하는 방법을 모르겠습니다. java 프로세스는 동기화 된 호출을 수행하여 java.util.Collection 참조를 가져올 때 종료됩니다. 도움 주셔서 감사합니다. – ecruz3

+0

Java 개발에 무엇을 사용하고 있는지 잘 모르겠지만 NetBeans에서는 디버그 메뉴의 디버거 연결 명령을 사용하여 이미 시작된 프로세스를 디버깅 할 수 있습니다. –

관련 문제