为什么子进程使用 tcpdump 以外的不同命令行?

Why children process is working with different command lines except tcpdump?

我不明白为什么 运行使用 tcpdump 程序不起作用,但它可以与其他命令和程序一起使用,例如:Ping、openSSL、...

当我 运行 例如使用 Ping 和 OpenSSL 时,数据出现在控制台中,但 tcpdump 什么都不做,它只是结束,仅此而已。

有人可以帮助我吗?谢谢

const {spawn} = require('child_process');
spawn('tcpdump', ['-D']).stdout.on('data', (data) => console.log(data.toString()))

//spawn('ping', ['127.0.0.1']).stdout.on('data', (data) => console.log(data.toString()))
//spawn('openssl', ['req', '-x509', '-newkey','rsa:4096','-keyout', 'key.pem', '-out', 'cert.pem', '-days', '365']).stdout.on('data', (data) => console.log(data.toString()))

最后问题是权限问题,但在我的例子中它使用超级用户(root)工作,tcpdump 最终使用了一些具有 root 权限的命令,但不是所有的命令都可以使用,例如捕获交通.

请记住,您拥有使用这些应用程序所需的权限。