2016-12-07 54 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

相關問題