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

2018-03-12 20:16:21 +08:00
 dinggk
如果有一个进程在后台运行,这个进程本来是可以接受键盘消息的,但是它现在在后台,只能查到进程 ID,怎样给他发键盘消息呢?
4302 次点击
所在节点    Linux
3 条回复
rim99
2018-03-12 22:26:14 +08:00
如果进程是用 bg 命令放在后台的 那就可以用 fg 命令召唤到前台
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
2018-03-13 11:07:33 +08:00
没说清,如果是 GUI 程序,需要枚举窗口,并通过 XInternAtom 获取 PID 进行匹配,核心是调用
XSendEvent ( https://www.x.org/archive/X11R7.5/doc/man/man3/XSendEvent.3.html )函数模拟键盘事件
如果是 CLI 程序,无法给后台进程输入,这是 POSIX 规定的,后台进程读输入会产生 SIGTTIN 信号
如果想达到相同的要求,就不能用后台进程,伪终端( pty )了解一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/437404

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX