我在Debian 6上使用C#和Mono 2.10.2。
所以情况是我创build了一个Process.Start()如下的进程:
Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.WorkingDirectory = "/home/lucy/"; p.StartInfo.FileName = "/bin/sh"; p.StartInfo.Arguments = "/home/lucy/test.sh"; p.EnableRaisingEvents = true; p.ErrorDataReceived += new DataReceivedEventHandler(ShellProc_ErrorDataReceived); p.Start();
在这种情况下被称为test.sh的shell脚本运行了几个东西,包括启动一个Java应用程序。 我收到的问题是当C#应用程序终止时,bash脚本/ Java应用程序也终止。
我看了Stack Overflow上发布的其他几个类似的问题,都没有得出明显的结论,包括:
如何在Linux上开发.NET Micro Framework?
在Linux下,C#程序在单声道下不起作用。
无法加载types“System.Net.Security.SslStream”
.NET / Mono框架目标
使用Mono为Linux创build可执行文件?
如何创build一个超过其父母的过程
根据一些用户和所谓的文档,Process.Start()创build的进程不应该在应用程序终止时被终止,但显然在我的情况是不正确的。 所以这可能是一个单声道相关的问题,如果确实是这样的话,那么现在我有什么替代scheme,因为我现在没有想法。
webkit尖锐的Windows包
如何在Linux命令行上通过Mono构buildC#文件?
我允许使用Mono和mod_mono托pipeASP.NET MVC网站吗?
这是一个完整的示例,适用于我:
using System; using System.Diagnostics; class Tick { static void Main(string[] args) { Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.WorkingDirectory = Environment.CurrentDirectory; p.StartInfo.FileName = "/bin/sh"; p.StartInfo.Arguments = "test.sh"; p.EnableRaisingEvents = true; p.ErrorDataReceived += new DataReceivedEventHandle(ShellProc_ErrorDataReceived); p.Start(); System.Threading.Thread.Sleep (5000); Console.WriteLine ("done"); } static void ShellProc_ErrorDataReceived (object sender,DataReceivedEventArgs ea) { } }
然后test.sh是:
while true; do date; sleep 1; done
当我从终端运行样本时,test.sh脚本将在示例程序退出后继续输出数据。
更新1 /解决方案:这实际上不是单声道的错,实际上是我自己的错,下面的答案帮助我得出结论,这是我的应用程序中的其他东西,导致应用程序终止时,应用程序启动的进程终止真正引起这个的东西是一些GC的东西,特别是GC.Collect(),我的错,对不起,我希望这可以帮助任何有类似问题的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。