`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,你可以自己创建系统调用,也可以向上游提交。