Linux bash 스크립트를 작성하고 실행 권한을 추가하고 실행하려고하는 chmod를 실행하는 Java 코드가 있습니다. 오류 = 26, 텍스트 파일 사용 중이라는 프로세스가 시작될 때 IOException이 발생합니다. 파일 작성이 완료되고 스트림이 닫혔 음을 확인했습니다. chmod는 정상적으로 작동하지만이 오류가 계속 발생합니다.java 실행중인 bash 스크립트, error = 26 텍스트 파일 사용 중
디버거를 실행하고 코드를 단계별로 실행하면 오류가 발생하지 않으므로 타이밍 문제가 있음을 알았습니다. bash 스크립트를 실행하기 전에 chmod가 완료되었는지 어떻게 확인할 수 있습니까? Thread.sleep (10000)을 추가하는 것과 같이 신뢰할 수없는 솔루션을 피하고 싶습니다. 성공할 때까지 루프를 시도하고 try/catch 블록에 실행을 넣는 것과 같은 "해킹"을 들려줍니다.
나는 등을 듣고 스레드와 프로세스의 시작을 포장 코드의 상당한 양의가 있지만 여기가 무엇을하고 있는지의 단순화 된 버전입니다 (이 코드도 시도는 그것은 같은 결과가) : 을String[] cmd1 = {"/bin/chmod", "750", postFile };
new ProcessBuilder(cmd1).redirectErrorStream(true).start().waitFor();
String[] cmd2 = { postFile };
new ProcessBuilder(cmd2).redirectErrorStream(true).start().waitFor();
실행 후 "postFile"에는 올바른 750 개의 사용 권한이 있지만 실행되지 않았습니다 (IOException 때문에).
코드가 있습니까? 당신이 당신의 chmod를 실행하는 것처럼? 감사합니다 – talnicolas
파일을 여러 위치에서 열지 않았는지 다시 확인하십시오. –
감사합니다. 나는 똑같은 문제가 있었는데 파일을 열었지만 닫지 않은 수업은 완전히 무관하고 처분되었다. – AdamOutler