如前所述here,我试图在Pascal中重新创建一个SSH概要文件管理器,该管理器最初是用Ruby编写的。使用提供的答案,我已经能够使 shell 保持打开状态并接受输入。现在,我遇到了任何新问题,所有输入都被隐藏了,所有输出似乎在每行之前都铺有几个制表符。更新后的相关代码如下:

if HasOption('c', 'connect') then begin
  TempFile:= GetRecord(GetOptionValue('c', 'connect'));
  AProcess:= TProcess.Create(nil);
  AProcess.Executable:= '/usr/bin/ssh';
  AProcess.Parameters.Add('-p');
  AProcess.Parameters.Add(TempFile.Port);
  AProcess.Parameters.Add('-tt');
  AProcess.Parameters.Add(TempFile.Username + '@' + TempFile.Address);
  AProcess.Options:= [];
  AProcess.ShowWindow:= swoShow;
  AProcess.InheritHandles:= False;
  AProcess.Execute;
  AProcess.WaitOnExit;
  AProcess.Free;
  Terminate;
  Exit;
end;

输出提供如下所示:

ssh - 输入隐藏,输出缩进-LMLPHP

我按此顺序运行了lspwdexit

最佳答案

因此,可能您使用了crt或其他一些终端库,这些终端库将终端置于原始模式,同时需要cr和lf。

从uses子句中删除crt,可能会更好

07-24 18:12