V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dinggk
V2EX  ›  Linux

怎样给后台进程发送键盘消息?

  •  
  •   dinggk · 2018-03-12 20:16:21 +08:00 via Android · 4322 次点击
    这是一个创建于 2454 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果有一个进程在后台运行,这个进程本来是可以接受键盘消息的,但是它现在在后台,只能查到进程 ID,怎样给他发键盘消息呢?
    rim99
        1
    rim99  
       2018-03-12 22:26:14 +08:00 via iPhone
    如果进程是用 bg 命令放在后台的 那就可以用 fg 命令召唤到前台
    peinstrike
        2
    peinstrike  
       2018-03-12 23:05:56 +08:00
    使用 jobs 可以看到后台运行的进程
    返回结果类似如下:
    [1] Running python manage.py runserver 0:8000 &
    [2]- Running python manage.py runserver 0:8001 &
    [3]+ Running python manage.py runserver 0:8002 &
    如果想让它回到前台,比如让第二个回到前台运行,只需使用命令 fg 2 即可
    iwtbauh
        3
    iwtbauh  
       2018-03-13 11:07:33 +08:00 via Android
    没说清,如果是 GUI 程序,需要枚举窗口,并通过 XInternAtom 获取 PID 进行匹配,核心是调用
    XSendEvent ( https://www.x.org/archive/X11R7.5/doc/man/man3/XSendEvent.3.html )函数模拟键盘事件
    如果是 CLI 程序,无法给后台进程输入,这是 POSIX 规定的,后台进程读输入会产生 SIGTTIN 信号
    如果想达到相同的要求,就不能用后台进程,伪终端( pty )了解一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1236 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:55 · PVG 07:55 · LAX 15:55 · JFK 18:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.