2011-09-10 27 views
2

我有一个打开的终端(xterm),里面运行着bash,显示提示符。假设我知道这个正在运行的bash的pid和与这个终端相关的tty。有没有什么办法,根本不用触摸这个终端,而只是使用tty和pid信息来请求这个非常运行的bash来运行一个命令?天真回声“command”> tty只会在终端显示命令,但bash不会将其作为用户输入接收。问一个正在运行的bash(交互式)从外部运行一个命令

回答

4

使用TIOCSTI ioctl。实施例C:

char* cmd="ls\n"; 
int fd = open (ptsname, O_RDWR); 

while (*cmd) 
{ 
    ioctl(fd, TIOCSTI, cmd++); 
} 
0

(2017)以下是从脚本或命令行实用:

stty -echo; perl -le 'require "sys/ioctl.ph"; ioctl(STDIN, &TIOCSTI, $_) for split "", join " ", @ARGV ' `_cmds_` ;stty echo; _app_ 

如果删除最后应用CMDS输出将存在于输入队列(如在内核中调用的那样),在当前的控制台shell或应用程序中编辑命令行。 stty只是停止任何(全双工)回显到屏幕。

注意:从技术上讲,这并不是明确地“模拟按键”。

相关问题