我有一个终端(xterm)打开并运行了bash,显示一个提示符。假设我知道此运行的bash的pid和与该终端相关联的tty。是否有任何方法,不触摸该终端,仅使用tty和pid信息,询问此正在运行的bash运行命令?天真地echo "command" > tty只会在终端中显示命令,但bash不会将其作为用户输入接收。
TIOCSTI
ioctl。以下是C语言示例:char* cmd="ls\n";
int fd = open (ptsname, O_RDWR);
while (*cmd)
{
ioctl(fd, TIOCSTI, cmd++);
}
以下内容可以在脚本或命令行中实现(2017年):
stty -echo; perl -le 'require "sys/ioctl.ph"; ioctl(STDIN, &TIOCSTI, $_) for split "", join " ", @ARGV ' `_cmds_` ;stty echo; _app_
stty
只是停止将任何(全双工)回显到屏幕上。
注意: 从技术上讲,这并不明确地“模拟按键”。但它的命令只在同一终端中执行,而不在提供的pts/no其他终端中执行。