C/C++, l'utilisation de la mémoire de l'API de Linux/Windows

J'aimerais obtenir des informations sur l'utilisation mémoire pour à la fois par des processus et du système de large. Dans Windows, il est assez facile. GetProcessMemoryInfo et GlobalMemoryStatusEx faire ces emplois grandement et très facilement. Par exemple, GetProcessMemoryInfo donne "PeakWorkingSetSize" de ce processus. GlobalMemoryStatusEx retourne à l'échelle du système de la mémoire disponible.

Cependant, j'ai besoin de le faire sur Linux. J'essaie de trouver un système Linux Api qui sont l'équivalent GetProcessMemoryInfo et GlobalMemoryStatusEx.

J'ai trouvé 'getrusage'. Cependant, max 'ru_maxrss' (resident set size) struct rusage est tout à zéro, ce qui n'est pas mis en œuvre. Aussi, je n'ai aucune idée d'obtenir à l'échelle du système de la mémoire libre.

Solution actuelle pour elle, je suis en utilisant le "system("ps -p %my_pid -o vsz,rsz");". Manuellement la connexion au fichier. Mais, c'est sale et pas très pratique pour traiter les données.

J'aimerais savoir un peu de fantaisie Linux Api à cette fin.

Êtes-vous vouloir la quantité de mémoire utilisée par un processus particulier ou ce qui est utilisé par un thread particulier?
Je voulais par processus et de l'ensemble du système, et j'ai résolu ce problème.

OriginalL'auteur minjang | 2009-11-04