我正在尝试用 C# 做一个“脚本化 telnet”项目(有点类似于Tcl期望 http://expect.nist.gov/我需要为其启动 telnet 进程并重定向(和处理)其 stdin/stdout 流。
问题是,生成的 telnet 进程在启动后立即退出(但是它确实启动了)。
如果我尝试对 -say- cmd.exe 执行相同操作,它会起作用。
telnet 实现是否需要交互式标准输入? Windows 中是否存在这个概念?
我运行的是 Win7 64 位,这会导致所描述的行为吗?
这是我使用的片段:
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);
输出是:
退出?真的
如果我使用这个:
...
m_process.StartInfo = new ProcessStartInfo(
@"C:\Windows\system32\cmd.exe", "");
...
输出是
退出?错误的
Telnet.exe 无法重定向。可能的原因是它的行为就像一个终端,模拟 VT100。当您启动它时,您会看到一个提示,它会清除屏幕。只有当程序直接写入控制台屏幕缓冲区时,这才有可能。没有已知的方法可以让它表现出来,否则 set term 命令没有非终端模式选项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)