이것은 매우 특정한 문제로 어디서나 단서를 찾지 못했습니다. 그래서 Java 프로그램에서 여러 가지 다른 Linux 명령을 호출하기 위해 Runtime.getRuntime(). exec()를 사용하고 있습니다. 다음 코드는 약간의 변경 (bash 및 문자열 배열 사용 여부)을 적용 할 때 거의 모든 유형의 Linux 명령에서 잘 작동합니다. 그러나 Runtime.getRuntime(). Linux more 명령을 사용하면 exec()가 멈 춥니 다.
command = "ls -l | grep something";
strArr1 = new String[]{"/bin/sh" , "-c", command};
p1 = Runtime.getRuntime().exec(strArr1);
exitVal = p1.waitFor();
, 내 프로그램이 중지되고 난 다음 명령을 사용할 때 처리를 완료하지 않습니다 나는 또한, 예를 들어 다른 변화를 시도
command = "more file0.txt";
한 다음과 같은 것이 있습니다 오류 :
command = "more keywords/file0.txt";
strArr1 = new String[]{command};
p1 = Runtime.getRuntime().exec(strArr1);
exitVal = p1.waitFor();
또는
command = "more keywords/file0.txt";
p1 = Runtime.getRuntime().exec(command);
exitVal = p1.waitFor();
오류는 다음과 같습니다
There was a problem:java.io.IOException: Cannot run program "more keywords/file0.txt": error=2, No such file or directory
사실, file0.txt가 존재한다.
그래서 Linux 명령이 Runtime.getRuntime(). exec()에서 더 작동하는지 궁금합니다. 이 명령은 다른 명령에 대한 결과를 생성하기 때문에 실제로 작동해야합니다. 미리 감사드립니다.
'more'는 일반적으로 텍스트 파일의 대화식 명령 줄보기에 사용됩니다. 결과를 다른 명령에 정확히 사용하려면 어떻게합니까? – merlin2011
당신은'more' 또는'less'와 같은 호출기의 목적을 오해하는 것처럼 보입니다. 파일을 읽는 프로세스를 시작할 이유가 없지만, 원할 경우 아마도 'cat'을 사용해야합니다. –
@ChrisStratton 고양이가 완벽하게 작동했습니다. 감사. – Lorderon