3

我有一个无限期运行的进程,直到按下一个键。我想使用 bash 将击键注入此进程以使其终止。基于这篇文章,linux - 从一个终端写入命令到另一个我尝试使用的终端

echo -e "b" > /proc/[pid]/fd/0

(在这种情况下,字母“b”只是任意的)字母“b”将显示在无限期运行的进程的终端中,但它不会像我实际键入时那样触发程序终止“b”进入窗口。

我也看到了对 xdotools 的推荐,但我无法让它工作,并试图远离依赖 GUI 来实现它。

我正在运行 Ubuntu 10.04,我在 bash 方面没有太多经验。

4

2 回答 2

4

这里

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>

int main(void)
    {
    int hTTY = open("/dev/tty1", O_WRONLY|O_NONBLOCK);
    ioctl(hTTY, TIOCSTI, "b");

    close(hTTY);
    return 0;
    }

在此示例中,终端和击键是硬编码的,但可以根据您的需要进行调整。

你可以在 Perl 中做类似的事情:

perl -e '$TIOCSTI = 0x5412; $tty = "/dev/pts/1"; $char = "b"; open($fh, ">", $tty); ioctl($fh, $TIOCSTI, $char)'

我必须使用sudo.

于 2012-06-26T00:09:22.490 回答
0

从脚本中杀死进程怎么样

killall processname
于 2012-06-25T23:10:31.697 回答