これは実行するコードです
cp.exec("cc -Wall /tmp/test.c -o /tmp/test", function(e, stdout, stderr) {
if (e) {
var errorstr = "Compilation failed with the following error
"+ e.message.toString()
client.send(errorstr)
console.log(e, stdout, stderr)
ee.prototype.removeAllListeners()
} else if (stderr.length > 0) {
client.send("Compilion finished with warnings\n"+ stderr + '\n')
client.send('compiled')
ee.prototype.emit('compiled')
} else {
client.send("Compilation successful")
ee.prototype.emit('compiled')
}
})
「client」は、socket.io のコールバック引数の引数です。「ee」は EventEmitter のインスタンスです
問題に来ます。コードを実行すると、コールバックはコマンドが失敗したことを示します。console.log(e, stdout, stderr) は
{ [エラー: コマンドが失敗しました: ] 終了: false、コード: false、シグナル: 未定義 } '' ''
/tmp/test.c は有効な C コードであり、ディレクトリ /tmp を確認すると、test.c が適切であり、バイナリ 'test'が生成され、シェルでの実行時に適切に実行されることがわかります。したがって、実行の失敗にフラグを立てる理由がわかりません。エラー オブジェクトの情報も役に立ちません。いくつかの助け/説明をいただければ幸いです