在 Linux 上,在终端 A 中前台执行的进程,如何在终端 B 中掉到前台来执行?

2021-09-22 19:51:03 +08:00
 liuguangxuan

假设我有一个可执行程序 a.out ,两个终端分别为终端 A 、终端 B 。

现在我在终端 A 前台执行程序./a.out ,我如何不操作终端 A 、只操作终端 B,并且不结束 a.out 进程的情况下,让 a.out 在终端 B 中前台执行?

3981 次点击
所在节点    Linux
21 条回复
2i2Re2PLMaDnghL
2021-09-24 10:31:55 +08:00
@mingl0280 所以 #4 算是正解。
粗看了一下代码,发现了 gdb 。也就是说如果有抗拒被 gdb 插入的程序,是不能覆盖的
或者不是通过 stdout/stderr 而是重新把 pts/tty 打开的(虽然正常人不太会这么干),那也是不能覆盖的。

另外可以考虑用 ptrace 捕获 syscall,甚至 strace -p <pid> | post_processor 也是可以的。

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

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

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

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

© 2021 V2EX