用Unity3D处理C#system.process stdin / stdout

时间:2016-12-11 13:13:11

标签: c# linux ubuntu unity3d process

一周前我问过一个非常相似的问题,我仍然试图找到答案。

我设置了一个完整的新Unity3D项目,在其中放置一个对象,创建一个C#脚本并将以下代码放在Start()方法中。

void Start() {

    Process myProcess = new Process();

    myProcess.StartInfo.FileName = "gnome-terminal";
    myProcess.StartInfo.UseShellExecute = false;
    myProcess.StartInfo.RedirectStandardInput = true;
    myProcess.StartInfo.RedirectStandardOutput = true;
    //myProcess.StartInfo.CreateNoWindow = true; for testing
    myProcess.Start();
    //Thread.Sleep(6000); somebody suggest wait some time, but it make no difference
    myProcess.StandardInput.WriteLine("sensible-browser");

}

我为我的Linux Ubuntu系统构建项目并执行它。出现了一个新的终端,就是这样。通常,现在浏览器应该是打开的,但事实并非如此。

这只是我的测试程序。在我的起源中,我必须从stdin / stdout读取/写入。

我非常绝望,希望你们中的任何人都可以帮助我

谢谢

1 个答案:

答案 0 :(得分:0)

使用bash代替gnome-terminal

Process myProcess = new Process();
myProcess.StartInfo.FileName = "bash";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.Start();
myProcess.StandardInput.WriteLine("sensible-browser");
myProcess.StandardInput.Close();