La seule interfaces fournies par le noyau Linux pour obtenir les limites de ressources sont getrlimit()
et /proc/
pid/limits
. getrlimit()
ne peut obtenir les limites des ressources du processus appelant. /proc/
pid/limits
vous permet d'obtenir les limites des ressources de tout processus avec le même id d'utilisateur, et est disponible sur RHEL 5.2, RHEL 4.7, Ubuntu 9.04, et toute distribution avec un 2.6.24 ou plus tard noyau.
Si vous avez besoin de soutenir les anciens systèmes Linux, alors vous aurez à faire le processus lui-même à l'appel getrlimit()
. Bien sûr, la façon la plus simple de le faire est par la modification du programme ou d'une bibliothèque qu'il utilise. Si vous exécutez le programme, vous pourriez utiliser LD_PRELOAD
à la charge de votre propre code dans le programme. Si rien de cela n'est possible, alors vous pouvez joindre au processus à l'aide de gdb et exécuter l'appel dans le processus. Vous pouvez également faire la même chose vous-même à l'aide de ptrace()
à joindre au processus, insérer l'appel à sa mémoire, etc, cependant, c'est très compliqué à obtenir le droit et n'est pas recommandé.
Avec les privilèges appropriés, les autres manières de faire ceci impliquerait en regardant à travers la mémoire du noyau, le chargement d'un module du noyau, ou autrement modifier le noyau, mais je suis en supposant qu'ils sont hors de question.