`mlockall`到另一个进程

`mlockall`到另一个进程,c,linux,memory,C,Linux,Memory,我将在没有根权限的实时进程上执行mlockall。由于max locked memory的用户ulimit非常低(出于安全考虑,这是正常的),因此我将通过rootuser生成的另一个进程锁定内存 不幸的是,mlockall具有以下签名: int mlockall(int flags); 因此,只有当目标进程直接调用它时,它才能工作。是否存在锁定另一进程内存的方法(例如,另一个系统调用)? 比如: int mlockall(int flags, pid_t pid); 我编写了一个新的系统调用

我将在没有根权限的实时进程上执行
mlockall
。由于max locked memory的用户
ulimit
非常低(出于安全考虑,这是正常的),因此我将通过
root
user生成的另一个进程锁定内存

不幸的是,
mlockall
具有以下签名:

int mlockall(int flags);
因此,只有当目标进程直接调用它时,它才能工作。是否存在锁定另一进程内存的方法(例如,另一个系统调用)? 比如:

int mlockall(int flags, pid_t pid);

我编写了一个新的系统调用来填补这个空白


我将补丁附加到内核mm邮件列表中,您可以发现它

使用gdb注入代码的可能重复确实是一个糟糕的解决方案,最好有一个系统调用或其他不涉及代码注入的机制。如何使用必要的权限启动实时进程,在实际进程“
main()
启动之前,使用一个小型动态库来设置资源限制、进程优先级和锁定内存,并删除特权?您确实需要一个助手程序(setuid)和动态库,但它们的实现应该非常简单。有兴趣吗?@RicoRico,你可以自己创建系统调用,也可以向上游提交。