-3

根据我对 Linux 进程系统的了解,您无法真正修改或篡改当前正在运行的进程(至少,据我所知,没有内置函数能够完成这样的任务)。但是有没有解决方法呢?是否可以说,暂停一个进程以在其中定义/修改一个变量,然后让它再次运行?举个简单的例子,是否可以暂停终端窗口进程,并在让它再次运行之前更改它的几何设置?

基本上,我正在寻找是否可能的见解,如果可能的话,我应该尝试一下吗?

编辑 - - - - - -

好的,我将尝试重新表述这个问题以更好地澄清:假设我有一个正在运行的 gnome 终端窗口,几何为 80x24。是否可以不杀死和/或替换将几何图形更改为 81x25 的过程?就像搁置它一样,应用新的更改,然后重新启动相同的过程?还是绝对不可能?

4

3 回答 3

2

您有时可能会使用ptrace(2)系统调用(例如,gdb调试器可以附加到进程并更改其数据中的某些内容)。

还有/proc/1234/pid 1234 的进程。参见proc(5),你可以大胆地写入/proc/1234/mem- 使用适当的文件偏移量 - 小心(也许只有在进程 1234 停止时 - 参见lseek(2)read(2)write(2)mmap(2)pwrite(2)kill(2)sigaction(2)等...另请阅读高级 linux 编程)。也看看/proc/1234/maps

此外,与更改终端的大小有关SIGWINCH:(窗口更改信号)与此有关,请参阅signal(7)。我猜友好的应用程序(例如emacsor vi)会处理它。ncurses库处理它。

您可能会对应用程序检查点BLCR库以及GNU screen实用程序感兴趣。

于 2013-05-10T18:05:01.663 回答
1

如果您只想调整现有窗口的大小,则可以使用xdotool 之类的东西。

于 2013-05-10T18:17:59.897 回答
1

您可以使用 GDB 调试正在运行的进程。这是一个类似的主题“我可以使用 GDB 调试正在运行的进程吗?” .

于 2013-05-10T18:08:30.113 回答