如何查找文件是否是node.js中的可执行文件

时间:2013-09-04 17:19:22

标签: node.js process

我正在寻找一种独立于平台(win,mac,linux)的方法来查找文件是否可执行。以下对我不起作用(甚至不在Linux上) -

var spawn = require("child_process").spawn;
var proc = spawn("whatever file");
proc.stderr.on('data', function (data) {
  if (/^execvp\(\)/.test(data)) {
    console.log('Failed to start child process.');
  }
});

2 个答案:

答案 0 :(得分:1)

我建议强烈反对执行文件作为测试它是否可执行的方法。如果您不知道文件是什么,请不要只运行它!这是一场安全和一般伤害的噩梦。这类似于测试一瓶透明液体是否因饮用而中毒。

第1步:通过stat

读取元数据

在posix(linux,mac,bsd)上,使用fs.stat然后检查mode字段以检查各种可执行的排列。

步骤2:读取文件数据的开头并猜测类型

您可以在其上运行file utility,它将使用幻数和其他启发式数据库来猜测文件类型。

就平台无关而言,AFAIK这个功能在Windows上并不太相似,因为它具有可靠的Windows等效于上述面向posix的技术。 Windows文件系统和文件类型是不同的,所以我想如果你想要它真正起作用,你需要一个单独的实现来正确处理窗口(和我以外的人建议如何在windows上实现它)。

答案 1 :(得分:0)

我使用mime-magic nodejs模块来了解文件的mime类型。