.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 (将#修改为@)