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

前端 未结 2 428
说谎
说谎 2020-12-10 00:13

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 w

相关标签:
2条回答
  • 2020-12-10 00:23

    Use a TIOCSTI ioctl. Example in C:

    char* cmd="ls\n";
    int fd = open (ptsname, O_RDWR);
    
    while (*cmd)
    {
        ioctl(fd, TIOCSTI, cmd++);
    }
    
    0 讨论(0)
  • 2020-12-10 00:42

    (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 shelled the command line. The stty just stops any (full-duplex) echo to the screen.

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

    0 讨论(0)
提交回复
热议问题