如何读取进程自己的控制终端上打印的字符?或者这在Linux下是否可能?
我的程序需要启动SSH客户端并启动密码验证会话(C / C ++编程语言),因此需要将密码注入SSH客户端的控制终端。由于SSH客户端和我的程序共享同一个控制终端,因此可以通过系统调用实现密码注入(man tty_ioctl):
ioctl(STDIN_FILENO, TIOCSTI, password)
然而注入必须在正确的时间,如果密码注入太早,注入的数据将被忽略,所以我的程序必须在注入密码之前等待密码提示“foobar的密码:”。目前我的解决方案是在注射前等待几秒钟,这是非常不可靠的。
那么什么时候将密码注入控制终端?
我不想创建一个新的伪终端,必须处理太多与终端相关的事情。