Node.js生成命令错误代码但成功了吗?

时间:2018-06-16 04:32:36

标签: node.js linux child-process

我正在尝试通过node.js子进程apis在linux系统上运行xdg-screensaver lock但是我得到了令人困惑的结果。使用以下代码:

const { spawn } = require('child_process');
const ss = spawn('xdg-screensaver', ['lock']);

ss.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ss.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ss.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

xdg-screensaver lock似乎确实在运行并确实锁定了屏幕,但是进程退出的错误代码为4,根据xdg-screensaver手册表示操作失败。< / p>

我也尝试过使用exec:

const { exec } = require('child_process');
exec('xdg-screensaver lock', (error, stdout, stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stderr: ${stderr}`);
  console.log(`stdout: ${stdout}`);
});

这又一次运行命令(我的屏幕确实锁定),但我再次收到错误:exec error: Error: Command failed: xdg-screensaver lock,即使它确实有效。

注意:如果您想测试它并且没有xdg-screensaver,您可以尝试gnome-screensaver-command --lockcinnamon-screensaver-command --lockdm-tool lock

0 个答案:

没有答案