-1
我会在没有root权限的实时进程to lock the memory pages上执行mlockall
。由于最大锁定内存的用户ulimit
真的很低(并且由于安全考虑,这是可以的),所以我会通过root
用户产生的另一个进程来锁定内存。`mlockall`到另一个进程
不幸的是,mlockall
有这样的签名:
int mlockall(int flags);
所以,它的工作原理,只有当它是由目标进程直接调用。有一种方法(例如另一个系统调用)来锁定另一个进程的内存? 类似于:
int mlockall(int flags, pid_t pid);
的可能的复制[LINUX:如何锁定在内存中的进程页](http://stackoverflow.com//12520499/linux-how-to-lock-the-pages-of-a-process-in-memory) –
使用gdb注入代码确实是一个糟糕的解决方案,应该更好地使用系统调用或其他机制不涉及代码注入。 – RicoRico
如何在启动实际进程的main()之前启动具有必要权限的实时进程,并使用一个小动态库来设置资源限制,进程优先级和锁定内存,以及*放弃权限? ?你确实需要一个帮助程序(setuid)和动态库,但他们确实应该很直接的实现。感兴趣吗? –