C#和#x2B;带有重定向标准流的telnet进程立即退出
我正在尝试用C#(类似于软件包的东西)做一个“脚本化telnet”项目,为此我需要启动一个telnet进程并重定向(和处理)其stdin/stdout流 问题是,生成的telnet进程在启动后立即退出(但它确实启动)。C#和#x2B;带有重定向标准流的telnet进程立即退出,c#,redirect,process,C#,Redirect,Process,我正在尝试用C#(类似于软件包的东西)做一个“脚本化telnet”项目,为此我需要启动一个telnet进程并重定向(和处理)其stdin/stdout流 问题是,生成的telnet进程在启动后立即退出(但它确实启动)。 如果我尝试对-say-cmd.exe执行相同的操作,它会起作用 telnet实现是否需要交互式stdin?这个概念是否存在于Windows中 我运行的是64位Win7,这会导致dscribed行为吗 以下是我使用的代码片段: Process m_process = new Pro
如果我尝试对-say-cmd.exe执行相同的操作,它会起作用 telnet实现是否需要交互式stdin?这个概念是否存在于Windows中 我运行的是64位Win7,这会导致dscribed行为吗 以下是我使用的代码片段:
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", "");
...
输出是
退出?假的
您对
cmd.exe
的所有实验都证明您成功地启动了cmd.exe
:-)
您是否尝试过在命令提示窗口中执行C:\Windows\system32\telnet.exe.blinkenlights.nl
以确保其正常工作?完成此操作后,您是否尝试从文件(例如,C:\Windows\system32\telnet.exe tower.blinkenlights.nl
)将输入重定向到它
我怀疑Windows的telnet可能没有使用stdin作为输入,以便处理终端仿真
我只是尝试了一个非常简单而且可能很幼稚的实验,至少在xp32位中是这样。我这样做:
echo GET / | telnet www.google.com 80
…但它不起作用,而telnet www.google.com 80然后键入
GET/
并按enter键起作用。一个类似的实验使用了一个可以读取stdin的工具(nslookup
——嘿,这是我必须要做的)效果很好。你对cmd.exe
的所有实验都证明你成功地启动了cmd.exe
:-)
您是否尝试过在命令提示窗口中执行C:\Windows\system32\telnet.exe.blinkenlights.nl
以确保其正常工作?完成此操作后,您是否尝试从文件(例如,C:\Windows\system32\telnet.exe tower.blinkenlights.nl
)将输入重定向到它
我怀疑Windows的telnet可能没有使用stdin作为输入,以便处理终端仿真
我只是尝试了一个非常简单而且可能很幼稚的实验,至少在xp32位中是这样。我这样做:
echo GET / | telnet www.google.com 80
…但它不起作用,而telnet www.google.com 80然后键入
GET/
并按enter键起作用。一个类似的实验使用了一个可以读取stdin的工具(nslookup
——嘿,这是我必须要做的),效果很好。Telnet.exe无法重定向。可能的原因是,它的行为类似于终端,模拟VT100。当你启动它时,你会看到一个提示,它会清除屏幕。这只有在程序直接写入控制台屏幕缓冲区时才可能。没有已知的方法使其正常工作,否则,set term命令没有非终端模式选项。Telnet.exe无法重定向。可能的原因是,它的行为类似于终端,模拟VT100。当你启动它时,你会看到一个提示,它会清除屏幕。这只有在程序直接写入控制台屏幕缓冲区时才可能。没有已知的方法使其正常工作,set term命令没有非终端模式选项。telnet.exe
不是windows 7 x64的一部分,也不位于c:\windows\system32
telnet.exe
不是windows 7 x64的一部分,也不位于c:\windows\system32