从C#应用程序运行批处理

从C#应用程序运行批处理,c#,node.js,batch-file,pm2,C#,Node.js,Batch File,Pm2,我有一个批处理文件,它存储在C驱动器中,名为stop.bat ECHO OFF ECHO STOP ALL APPLICATIONS call pm2 stop all PAUSE 任何我试图从winform应用程序运行此批处理的操作 // var cmd = "/K pm2 stop all"; // Process.Start("CMD.exe", cmd); System.Diagnostics.Process.Start(@"C:\stop.bat"); 在我的命令行中 chi

我有一个批处理文件,它存储在C驱动器中,名为stop.bat

ECHO OFF
ECHO STOP ALL APPLICATIONS
call pm2 stop all
PAUSE
任何我试图从winform应用程序运行此批处理的操作

 // var cmd = "/K pm2 stop all";
 // Process.Start("CMD.exe", cmd);
 System.Diagnostics.Process.Start(@"C:\stop.bat");
在我的命令行中

child_process.js:120
  p.open(fd);
    ^

Error: EBADF: bad file descriptor, uv_pipe_open
    at Object._forkChild (child_process.js:120:5)
    at Object.setupChildProcessIpcChannel (internal/process/main_thread_only.js:124:30)
    at startup (internal/bootstrap/node.js:134:23)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

当我手动打开stop.bat时,它运行成功,但是,当从代码调用时,它没有做任何事情。

这可能与此相关吗?问题似乎更多的是pm2,而不是从C运行。当您不关闭
fd
时,会发生EBADF。如果有任何相同的
fd
实例正在运行,请尝试关闭并重新运行代码。C#不做任何特殊操作。是Windows进程API之上的一个接口。事实上,除了使用一些参数调用
pm2
之外,批处理实际上不起作用。如果系统路径中可以找到
pm2
,则同样可以使用
Process.Start(“pm2”、“全部停止”)
。这不会修复任何
pm2
bugthough@Oliver,我发现我无法修复这个bug。所以我回去使用窗口函数来启动和终止task@PanagiotisKanavos你说得对。这是pm2缺陷,所以我必须在pm2中找到那个缺陷。