gpt4 book ai didi

linux - 是否可以在具有相同 PID 的 shell 脚本中运行多个可执行文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:19 24 4
gpt4 key购买 nike

我有一个简单的 Shell 脚本,其中多个可执行文件将按顺序运行。每次新的可执行文件开始运行时,都会启动一个具有新 PID 的新进程。是否可以使用相同的 PID 运行它们?我知道对于 shell 脚本,我们可以使用“source”。但我不知道如何处理可执行文件。

最佳答案

原则上,我认为这应该是可能的,但在实践中它会非常复杂和脆弱。

Linux 中的 exec 系列系统调用允许一个进程用一个全新的进程替换自己,该进程保持相同的 PID。棘手的部分是以某种方式从第二个过程“返回”到第一个过程。当调用 exec 时,操作系统会加载开始运行新进程所需的一切,并清除与当前进程(被替换的进程)相关的所有状态。当新进程终止时,操作系统释放与该进程关联的所有资源(包括 PID)。

因此,如果您真的想这样做,您将不得不劫持进程如何终止以重新启动您的原始进程,而不是让操作系统清理所有内容。你怎么能这样做?好吧,execleexecvpe 函数允许程序在启动进程之前指定新进程的环境。由于每个进程都依赖于 libc(或等效的)来启动/拆除进程,因此您应该能够提供一个自定义的 libc 来重新开始执行您的脚本,或 exec 另一个进程。最大的困难是破解这样的 libc。此外,您必须想出一个好方法让您的主程序保持状态,即使操作系统删除它在调用 exec 时可能使用的任何内存。您或许可以使用临时文件来完成此操作。

长话短说,不要这样做。虽然坐在这里思考实现这一目标所需的大量黑客攻击对我来说很有趣,但这将是一个巨大的痛苦,而且我相信对于您实际尝试的任何问题都有更优雅的解决方案解决。

关于linux - 是否可以在具有相同 PID 的 shell 脚本中运行多个可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17686256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com