이 프로그램을 실행하면 제대로 작동하지만 검증 결과는 false를 반환합니다. 다시 실행하면 확인 작업이 수행됩니다. 파일 쓰기를 어떻게 기다릴 수 있습니까?
fullpath
refpath
은 원본 파일의 경로입니다 :
if (fullpath.include?(refpath) && refpath.empty? == false && fullpath.empty? == false)
diffpath= "#{fullpath} #{refpath}"
puts diffpath
sortie = IO.popen("diff -Bb #{diffpath}").readlines #(fullpath backup_dir)
#puts fullpath
if sortie.empty?
puts "Les fichiers -#{f} sont identiques."
else
puts "Modification : [#{refpath}] \n [#{fullpath}] "
end
end
주요 프로그램은 다음과 같습니다 나는 파일이있는 디렉토리를 열
require "modif.rb"
require "testdate.rb"
require "restore_data.rb"
#Pour la sauvegarde des fichiers
puts "__________SAUVEGARDE__________"
#Pour la restauration des fichiers :
puts "__________RESTAURATION__________"
#Vérification de l'intégrité des fichiers restaurés.
puts "__________VERIFICATION__________"
sleep(5.0)
v = Verif.new
v.do_verif(outdir)
복원 할 때 파일이 완전히 쓰여지지 않습니다.
확인을 호출하기 전에 저장, 백업 및 확인을 호출합니다.
sleep
이 작동하지 않습니다. 프로세스가 완전히 일시 중지되었으며 누락 된 파일을 쓰지 않습니다.
저장/복원을 사용하여 파일을 쓰는 기능은 무엇입니까? – Taum
질문을 정리하여 (이해 되었으면) 더 이해하기 쉽게 만들었습니다. 코드를 보면 파일을 쓰려고하는 시도가 없습니다. 'IO.popen ("diff -Bb # {diffpath}"). readlines는'% x' 또는 backticks를 사용하여 더 쉽게 할 수 있습니다. 또한,'require '파일에 ".rb"확장자를 사용할 필요가 없습니다. 루비는 파일이 없으면 ".rb"확장자를 자동으로 추가합니다. –
관련성이 있습니다. http : // stackoverflow.com/questions/6701103/understanding-ruby-and-os-io-buffering 또한 모든 사람이 프랑스어로 말하지 않기 때문에 여러분의 의견을 영어로 번역하려고합니다 .-) – Taum