2014-05-23 2 views
3

파일 시스템 작업을 수행하는 노드 웹킷 앱을 만들고 있습니다. 파일을 삭제하기 전에 (링크 해제) 다른 프로세스에서 파일을 사용하고 있는지 확인할 수 있어야합니다.노드 js 파일이 다른 프로세스에서 사용되고 있는지 확인하십시오.

fs.unlink 메소드 만 사용하는 경우 시스템은 파일을 완전히 제거하기 전에 파일 사용이 중지 될 때까지 대기합니다. 내가 원한 것은 파일이 사용 중일 때 릴리스 될 때까지 기다리지 않고 전체 작업을 취소하고 삭제하지 않는다는 것입니다.

감사합니다.

+1

동기 작업으로 파일을 삭제하면 어떻게됩니까? 오류가 발생합니까 아니면 스크립트를 차단합니까? – Krasimir

답변

1

당신이 * nix 시스템을 사용한다고 가정하면 이와 같이 동작해야합니다. 분명히 이것은 오류 및 경로 검사까지 지나치게 간소화됩니다. 이 작업을 수행하는 것이 더 나을 수도 있지만 다음과 같이 토론을 시작할 수도 있습니다.

var fs = require('fs'), 
    exec = require('child_process').exec; 

function unlinkIfUnused(path) { 
    exec('lsof ' + path, function(err, stdout, stderr) { 
     if (stdout.length === 0) { 
      console.log(path, " not in use. unlinking..."); 
      // fs.unlink... 
     } else { 
      console.log(path, "IN USE. Ignoring..."); 
     } 
    }); 
} 

unlinkIfUnused('/home/jack/testlock.txt'); 
관련 문제