title: C# + telnet process w/ redirected standard streams quits immediately
body: <p>I'm trying to do a 'scripted telnet' project in C# (something vaguely resembling the <a href="http://expect.nist.gov/" rel="nofollow noreferrer">Tcl Expect</a> package) for which I need to start a telnet process and redirect (and process) its stdin/stdout streams. </p>
  
  <p>The problem is, the spawned telnet process quits immediately after starting (it does start, however).<br>
  If I try to do the same with -say- cmd.exe, it works.</p>
  
  <p>Does the telnet implementation require an interactive stdin? Does this concept even exist in Windows?</p>
  
  <p>I'm running Win7 64 bit, could this contribute to the dscribed behaviour?</p>
  
  <p>Here's the snippet i use:</p>
  
  <pre><code>Process m_process = new Process();
  m_process.StartInfo = new ProcessStartInfo(
                   @"C:\Windows\system32\telnet.exe", "towel.blinkenlights.nl");
  
  //required to redirect stdXXX
  m_process.StartInfo.UseShellExecute = false;
  m_process.StartInfo.ErrorDialog = false;
  
  m_process.StartInfo.RedirectStandardInput = true;
  m_process.StartInfo.RedirectStandardOutput = true;
  m_process.StartInfo.RedirectStandardError = true;
  
  Thread.Sleep(50);
  Console.WriteLine(" exited? " + m_process.HasExited);
  </code></pre>
  
  <p>The output is:</p>
  
  <blockquote>
    <p>exited? True</p>
  </blockquote>
  
  <p>If I use this:</p>
  
  <pre><code>...
  m_process.StartInfo = new ProcessStartInfo(
                  @"C:\Windows\system32\cmd.exe", "");
  ...
  </code></pre>
  
  <p>the output is </p>
  
  <blockquote>
    <p>exited? False</p>
  </blockquote>