Je voudrais exécuter un mlockall
sur un processus en temps réel to lock the memory pages qui n'a pas de privilèges root. Depuis l'utilisateur ulimit
pour la mémoire verrouillée max est vraiment faible (et c'est ok pour des raisons de sécurité), je verrouiller la mémoire via un autre processus engendré par l'utilisateur root
.`mlockall` à un autre processus
Malheureusement, mlockall
a cette signature:
int mlockall(int flags);
Ainsi, il ne fonctionne que si elle est appelée directement par le processus cible. Il existe un moyen (par exemple un autre appel système) de verrouiller la mémoire d'un autre processus? Quelque chose comme:
int mlockall(int flags, pid_t pid);
double possible de [LINUX: Comment verrouiller les pages d'un processus en mémoire] (http://stackoverflow.com/ questions/12520499/linux-how-to-lock-the-pages-of-a-process-in-memory) –
Injecter du code avec gdb est vraiment une mauvaise solution, il vaudrait mieux avoir un syscall ou un autre mécanisme qui fait n'implique pas l'injection de code. – RicoRico
Comment démarrer le processus en temps réel avec les privilèges nécessaires et utiliser une petite bibliothèque dynamique pour définir les limites de ressources, la priorité de processus et la mémoire de verrouillage, * et * abandonner les privilèges, avant que le processus réel 'main() ? Vous avez besoin d'un programme d'assistance (setuid) et de la bibliothèque dynamique, mais ils devraient être très simples à implémenter. Intéressé? –