루비에서 파일을 생성 할 로컬 명령을 실행하고 싶습니다. 그런 다음 파일의 내용을 읽고 수정하고 싶습니다.루비 스레드가 대기하지 않습니다.
그러나 나는 항상 null이됩니다. 그러나 나는 내용을 수정할 수 없습니다,
exec "java -jar xx.jar --output main.txt";
content=IO.read('main.txt');
content="somethinkg:"+content;
File.open('main.txt','w') do |f|
f.puts content
end
가 main.txt가 생성됩니다
이
는 코드입니다.그렇다면 스레드로 인해 발생한 것 같습니다. main.txt
을 읽을 때 java 명령이 완료되지 않았기 때문에 내용이 비어 있습니다.
t=Thread.new do
exec "java -jar xx.jar --output main.txt";
end
t.join
content=IO.read('main.txt');
puts content
content="somethinkg:"+content;
File.open('main.txt','w') do |f|
f.puts content
end
그러나 아무것도 변화하지, 난 아직 내용을 얻을 수 있습니다
은 그 때 나는이 시도했다.
무엇이 문제입니까?
없이 그것을 시도 도움이 희망'간부 이후에는 코드가 모든 간부 스왑 때문에 실행되지 않습니다 exec' 메모리 시도 시스템 또는 – Viren
@Viren 역 따옴표 연산자는 바로 소리 - 당신은 대답으로 추가해야한다, 나는 기초로부터 벗어났다 :) –
@Viren :'system ("java ...")'대신에? – hguser