-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)和動態庫,但他們確實應該很直接的實現。感興趣嗎? –