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