首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cygwin不能杀死mintty.exe

cygwin不能杀死mintty.exe
EN

Stack Overflow用户
提问于 2017-04-05 11:46:31
回答 2查看 194关注 0票数 1

我正在使用来自System.DiagnosticsSystem.Diagnostics类,下面是我的代码:

代码语言:javascript
复制
public void doMain() {
    Process cygwin = new Process();
    cygwin.StartInfo.FileName = "C:\\cygwin64\\bin\\mintty.exe";
    cygwin.Start();
    cygwin.Refresh();
    Thread.Sleep(1000);
    cygwin.Kill();
    cygwin.WaitForExit();
}

通常情况下,这应该运行mintty.exe进程,然后等待1秒,然后终止该进程,但是它会给我一个错误,即它在执行调用之前已经关闭了。

cygwin.Kill();调用行中,出现此异常:

System.InvalidOperationException类型的未处理异常发生在System.dll中 其他信息:无法处理请求,因为进程已退出。

为什么会发生这种事!

如果我用"C:\\cygwin64\\bin\\mintty.exe"替换"C:\\cygwin64\\bin\\bash.exe",那么异常就会消失!

有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-05 11:59:58

在已经终止进程之后调用cygwin.WaitForExit(),因此出现了错误。

将代码更新为:

代码语言:javascript
复制
public void doMain() {
    Process cygwin = new Process();
    cygwin.StartInfo.FileName = "C:\\cygwin64\\bin\\mintty.exe";
    cygwin.Start();
    cygwin.Refresh();
    Thread.Sleep(1000);
    cygwin.Kill();
    //cygwin.WaitForExit();
}

而且它应该能工作。

票数 0
EN

Stack Overflow用户

发布于 2017-04-05 22:08:12

这是启动windows程序的一种简单方法,它独立于启动过程和方法。程序立即分叉(启动一个新进程),新子进程打开mintty窗口,而原始进程退出。这是为了阻止你做你想做的事情。它在一个新的进程树中创建子进程。否则,如果从cmd窗口运行程序,则在关闭cmd窗口时程序将关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43230280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档