2014-05-23 51 views
3

我正在研究執行文件系統操作的node-webkit應用程序。我需要能夠在刪除(取消鏈接)之前檢查文件是否被另一個進程使用。節點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'); 
相關問題