C#和#x2B;带有重定向标准流的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

我正在尝试用C#(类似于软件包的东西)做一个“脚本化telnet”项目,为此我需要启动一个telnet进程并重定向(和处理)其stdin/stdout流

问题是,生成的telnet进程在启动后立即退出(但它确实启动)。
如果我尝试对-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