首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中将应用程序作为子进程启动时,控制台输出会丢失

在C#中将应用程序作为子进程启动时,控制台输出会丢失
EN

Stack Overflow用户
提问于 2021-11-09 14:22:08
回答 1查看 37关注 0票数 1

我遇到了在C#中启动的进程无法输出到控制台的问题,尽管它的输出被重定向。

我在unityci docker容器中运行一个控制台应用程序,它允许我以批处理模式启动unity,并将某些内容输出到控制台。

如果我使用bash启动unity,使用unity-editor -projectPath myProject -executeMethod myMethod -logFile -,我会得到控制台中显示的所有输出。

如果我使用C#启动一个带有相同参数的bash进程,则不会得到任何输出。

下面是我用来启动一个新进程的代码:

代码语言:javascript
复制
void StartProcess()
{
    string argsString = "-projectPath myPath -executeMethod myMethod -logFile -";
    ProcessStartInfo startInfo = new ProcessStartInfo(argsString)
    {
        FileName = "/bin/bash",
        Arguments = $"-c unity-editor \"{argsString}\"",
        RedirectStandardOutput = true,
        RedirectStandardError = false, 
        UseShellExecute = false,
        CreateNoWindow = true,
    };

    using Process proc = Process.Start(startInfo);
    OutputDataReceived += OnOutputDataReceived;            
    proc.BeginOutputReadLine();

    proc.WaitForExit();
}

void OnOutputDataReceived(object obj, DataReceivedEventArgs args)
{
    if(args.Data.StartsWith("[")
        Console.WriteLine(args.Data);
}

unity-editor命令是我正在使用的unityci docker容器的一部分。它执行以下操作:

代码语言:javascript
复制
#!/bin/bash

if [ -d /usr/bin/unity-editor.d ] ; then
  for i in /usr/bin/unity-editor.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
fi

xvfb-run -ae /dev/stdout "$UNITY_PATH/Editor/Unity" -batchmode "$@"

最后,我得到了一个控制台应用程序,它运行一个启动另一个应用程序的可执行文件,控制台输出在两者之间的某个地方丢失了。有人能解释一下输出的去向以及如何在控制台中显示吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-11 11:24:16

我想通了。问题是我是如何开始这个过程的。而不是启动bash实例来运行脚本,如下所示:

代码语言:javascript
复制
ProcessStartInfo startInfo = new ProcessStartInfo("/bin/bash", $"-c unity-editor \"{argsString}\"");

我应该直接将脚本作为一个进程启动:

代码语言:javascript
复制
ProcessStartInfo startInfo = new ProcessStartInfo("unity-editor", argsString);

我的印象是,您不能直接将bash脚本作为进程启动,因为那样会抛出System.ComponentModel.Win32Exception: Exec format error异常,但是将#!/bin/bash作为脚本的第一行可以让它们顺利运行。

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

https://stackoverflow.com/questions/69899810

复制
相关文章

相似问题

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