我有一个 python 脚本,它启动许多 C++ 程序,每个程序都会传递一个命令行参数,如下所示
process_path "~/test/"
process_name "test"
num_process = 10
for p in range(1, num_processes, 1):
subprocess.Popen([process_path + process_name, str(p)], shell = False)
我们是否可以使用 setproctitle 重命名每个进程,以便我可以将命令行参数作为进程名称的一部分包含在内,如果可以,您会怎么做?
setproctitle 只能更改它的“自己的”进程标题,因为我假设有一个安全元素,但重写进程表的技术是一种古老的 rootkit 技术——所以显然这是可能的。
此外,setproctitle 支持多个操作系统,因此更改进程信息的方法可能会有所不同,但为了解释起见,我假设您在 Linux 下使用它,让我们看看我们有什么。
Linux 使用 prctl(),看起来就像使用 prctl(PR_SET_NAME, "my_new_name");,并且这只适用于调用进程。因此,使用 setproctitle 模块似乎没有一种“简单”的方法来做到这一点——你只能修改自己。
最好的办法是修改 C++ 代码,以便它使用 prctl。
如果您不使用 Linux,请发布您正在使用的内容,因为其他操作系统提供了与 pctl 的限制有很大不同的其他机会和方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)