简体   繁体   中英

Ask a running bash (interactive) to run a command from outside

I have a terminal (xterm) open with bash running in it, showing a prompt. Suppose I know this running bash's pid and the tty associated with this terminal. Is there any way, not touching this terminal at all, but only use the tty and pid information, to ask this very running bash to run a command? Naively echo "command" > tty would only show the command in the terminal but bash doesn't receive it as a user input.

Use a TIOCSTI ioctl. Example in C:

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

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

(2017) The following is practical from a script or command line:

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

If you drop the final app the output of cmds will be present on the input queue (as it is called in the kernel), on your current console shell or in the application that shell ed the command line. The stty just stops any (full-duplex) echo to the screen.

Note: technically, this is not explicitly "simulating keypress".

但它的命令仅在同一终端中执行,而不是在 pts/no 给出的其他终端中执行

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM