You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

‘Process finished with exit code 500’报错原因及解决咨询

进程启动后立即退出,返回退出码500的排查与解决

问题描述

运行App1启动App2.exe时,App2迅速自行退出,返回提示:Process finished with exit code 500,搜索引擎未找到该退出码的公开相关信息。相关代码如下:

App1 代码

using System.Diagnostics;

var app2 = new Process()
{
    StartInfo =
    {
        FileName = "App2.exe",
        UseShellExecute = false,
        CreateNoWindow = false
    }
};
app2.Start();

App2 代码

while (true)
{
    string input = Console.ReadLine();
    Console.WriteLine("Input is " + input);
}

原因分析

退出码500并非Windows系统标准错误码,大概率是App2启动失败时抛出未处理异常,进而返回的自定义退出码。结合代码场景,核心问题在于:当UseShellExecute = false时,控制台程序App2的标准输入流未被正确关联,导致Console.ReadLine()尝试读取输入时直接触发异常,最终进程异常退出并返回500码。

解决方案

针对这个问题,有两种可行的解决思路:

方案1:启用ShellExecute

将UseShellExecute设置为true,让系统Shell负责进程启动,自动完成控制台输入流的关联:

var app2 = new Process()
{
    StartInfo =
    {
        FileName = "App2.exe",
        UseShellExecute = true, // 修改为true
        CreateNoWindow = false
    }
};
app2.Start();

方案2:手动重定向输入流(适合需要自定义交互的场景)

如果必须保持UseShellExecute = false,需要显式开启标准输入重定向,确保App2能获取输入流:

var app2 = new Process()
{
    StartInfo =
    {
        FileName = "App2.exe",
        UseShellExecute = false,
        CreateNoWindow = false,
        RedirectStandardInput = true // 开启输入重定向
    }
};
app2.Start();
// 若需要交互,可通过以下方式向App2写入输入
// app2.StandardInput.WriteLine("test input");

另外,也可以在App2中添加异常捕获逻辑,避免进程直接崩溃,方便后续排查问题:

while (true)
{
    try
    {
        string input = Console.ReadLine();
        Console.WriteLine("Input is " + input);
    }
    catch (Exception ex)
    {
        Console.WriteLine($"启动异常:{ex.Message}");
        // 可自定义退出码或选择继续运行
        // Environment.Exit(1);
    }
}

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:27:34