Ich fragte eine sehr ähnliche Frage vor einer Woche und ich versuche immer noch, eine Antwort zu finden.C# system.process stdin/stdout Handhabung mit Unity3D
Ich habe ein komplettes neues Unity3D-Projekt eingerichtet, ein Objekt darin eingefügt, ein C# -Skript erstellt und den folgenden Code in die Start() -Methode eingefügt.
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");
}
Ich baue das Projekt für mein Linux Ubuntu System und führe es aus. Ein neues Terminal erscheint und das war's. Normalerweise sollte der Browser jetzt geöffnet sein, tut es aber nicht.
Das ist nur mein Testprogramm. In meinem Ursprung muss ich von/in die stdin/stdout lesen/schreiben.
bin ich völlig verzweifelt und hoffentlich jemand von euch kann mir helfen
Dank
haben Sie versucht, den Streamwriter am Ende zu schließen? 'myProcess.StandardInput.Close();' – Bijan
Ja, in diesem Fall ist das Terminal noch offen, aber nichts passiert. –
Wenn es nicht einmal "sensible-browser" schreibt, versuchen Sie, die letzte Zeile mit einer Verzögerung aufzurufen. – Bijan