【发布时间】:2022-08-22 19:50:36
【问题描述】:
我正在尝试使用 node.js 中的子进程运行 C 文件。我使用 execFile 来执行此操作,\'test\' 文件位于同一文件夹中。相同的程序在 linux 上运行并提供输出,但不在 windows 上运行。它在 Windows 上显示 error: spawn ./test ENONET。我该怎么办?
const { execFile } = require(\'child_process\')
execFile(\'./test\', (error, stdout, stderr) => {
if(error) {
console.log(`error: ${error.message}`)
return
}
if(stderr) {
console.log(`stderr: ${stderr}`)
}
console.log(`stdout: ${stdout}`) })
编辑:我尝试使用位于同一目录中的此文件 \'somefile.sh\'
#!/bin/bash
//ls -lh //for linux
-dir //for windows
表明
Error: spawn UNKNOWN
←[90m at ChildProcess.spawn (internal/child_process.js:403:11)←[39m
←[90m at spawn (child_process.js:553:9)←[39m
←[90m at execFile (child_process.js:237:17)←[39m
at Object.<anonymous> (C:\\Users\\Dell\\Desktop\\Projects\\childprocess\\exec_file.js:6:1)
←[90m at Module._compile (internal/modules/cjs/loader.js:1063:30)←[39m
←[90m at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)←[39m
←[90m at Module.load (internal/modules/cjs/loader.js:928:32)←[39m
←[90m at Function.Module._load (internal/modules/cjs/loader.js:769:14)←[39m
←[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)←[39m
←[90m at internal/main/run_main_module.js:17:47←[39m {
errno: ←[33m-4094←[39m,
code: ←[32m\'UNKNOWN\'←[39m,
syscall: ←[32m\'spawn\'←[39m
}
我还尝试使用单个命令执行 exec,它提供了以下代码的输出。
const {exec} = require(\'child_process\')
exec(\'pwd\', (error, stdout, stderr) => {
if(error) {
console.log(`error: ${error.message}`)
return
}
if(stderr) {
console.log(`stderr: ${stderr}`)
}
console.log(`stdout: ${stdout}`)
})
输出显示当前的工作目录。 这是我参考的教程:https://www.youtube.com/watch?v=bbmFvCbVDqo&t=441s
-
你的节点和编译的c文件在同一个目录下吗?文件有扩展名吗?例如
.exe?您是否尝试过使用文件扩展名? -
是的,同一个目录。但该文件最初没有扩展名。当我以 \'./test.c\' 和 \'./test.exe\' 运行它时,它仍然显示相同的错误。
-
你可以添加我可以自己尝试的c源或简单的c dummy吗?你用
child_process module, likeexec`的其他方法试过了吗? -
是的,我尝试过 exec 并给出了 pwd 命令,它适用于 exec 但不适用于 execfile。我在编辑中添加了示例代码。
标签: node.js child-process execfile