微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.NET Core Process.Start() 子进程在父进程退出时退出?

如何解决.NET Core Process.Start() 子进程在父进程退出时退出?

我正在 .NET Core 中为 Linux 制作一个简单的更新程序

应用程序(MVC 应用程序)下载更新并启动“更新程序”应用程序,然后退出。子应用程序等待父应用程序退出,然后再提取父​​应用程序的更新。

父级正在启动子级,如下所示:

var process = new Process
{
    StartInfo = new processstartinfo
    {
        FileName = $"{Path.Combine(Program.RootFolderPath,"Updater")}",Arguments = $"{Process.GetCurrentProcess().Id} \"{updateFile}\" \"{Program.RootFolderPath}\"",UseShellExecute = false,CreateNowindow = true,RedirectStandardError = true,RedirectStandardOutput = true
    }
};

process.OutputDataReceived += (sender,data) => {
    Program.GeneralLog.Info(data);
};

process.ErrorDataReceived += (sender,data) => {
    Program.GeneralLog.Error(data);
};

process.Start();

似乎正在发生的是 应用程序在 退出退出。这是故意的吗?

父应用程序在 RaspBerry Pi 上作为服务(使用 systemd)在 pi 用户下运行——以防万一。服务设置为退出 30 秒后自动重新启动。

注意我已经在 Windows(我的开发环境)中使用 Notepad.exe 作为子进程对此进行了测试,并且当父进程退出时子进程不会退出,所以我的问题特别是关于我在 Linux 中可能做错了什么。

注意:可能与this post有关

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。