2016-12-07 56 views
-1

我会在没有root权限的实时进程to lock the memory pages上执行mlockall。由于最大锁定内存的用户ulimit真的很低(并且由于安全考虑,这是可以的),所以我会通过root用户产生的另一个进程来锁定内存。`mlockall`到另一个进程

不幸的是,mlockall有这样的签名:

int mlockall(int flags); 

所以,它的工作原理,只有当它是由目标进程直接调用。有一种方法(例如另一个系统调用)来锁定另一个进程的内存? 类似于:

int mlockall(int flags, pid_t pid); 
+0

的可能的复制[LINUX:如何锁定在内存中的进程页](http://stackoverflow.com//12520499/linux-how-to-lock-the-pages-of-a-process-in-memory) –

+0

使用gdb注入代码确实是一个糟糕的解决方案,应该更好地使用系统调用或其他机制不涉及代码注入。 – RicoRico

+0

如何在启动实际进程的main()之前启动具有必要权限的实时进程,并使用一个小动态库来设置资源限制,进程优先级和锁定内存,以及*放弃权限? ?你确实需要一个帮助程序(setuid)和动态库,但他们确实应该很直接的实现。感兴趣吗? –

回答

1

我写了一个新的系统调用以弥补差距。

我贴附的补片的内核毫米的邮件列表,你可以找到它here

相关问题