Stiamo provando a scoprire quanta memoria fisica è installata in una macchina che esegue Mac OS X. Abbiamo trovato la funzione BSD sysctl(). Il problema è che questa funzione vuole restituire un valore a 32 bit, ma alcuni Mac sono in grado di indirizzare fino a 32 GB che non si adattano a un valore a 32 bit. (In realtà anche 4 GB non rientrano in un valore a 32 bit.) C'è un'altra API disponibile su OS X (10.4 o successive) che ci darà queste informazioni?Determina la dimensione fisica della mem in modo programmatico su OSX
risposta
Hai provato a cercare su Google?
Questa sembra essere la risposta: http://lists.apple.com/archives/scitech/2005/Aug/msg00004.html
sysctl() funziona, non vi resta che prendere hw.memsize invece di hw.physmem. hw.memsize ti darà un uint64_t, quindi nessun problema a 32 bit.
La risposta è utilizzare sysctl per ottenere hw.memsize come suggerito in una risposta precedente. Ecco il codice effettivo per farlo.
#include <sys/types.h>
#include <sys/sysctl.h>
...
int mib[2];
int64_t physical_memory;
size_t length;
// Get the Physical memory size
mib[0] = CTL_HW;
mib[1] = HW_MEMSIZE;
length = sizeof(int64_t);
sysctl(mib, 2, &physical_memory, &length, NULL, 0);
Una correzione minore: sizeof (int64) dovrebbe essere sizeof (int64_t) –
In alternativa è possibile aggiungere i dati da vm_statistics_data_t per ottenere la memoria totale
vm_statistics_data_t vm_stat;
int count = HOST_VM_INFO_COUNT;
kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (integer_t*)&vm_stat, (mach_msg_type_number_t*)&count);
Qui viene visualizzato un avviso: "La dichiarazione implicita della funzione 'host_statistics' non è valida in C99", come posso risolvere questo problema? –
#include
Grazie a @valexa, ma non funziona, anche con l'aggiunta di Kernel.framework, mostrerà un errore sulla linea che dice che non esiste. L'avviso non è un errore, quindi ha un po 'di codice deprecato. Forse hai un'idea? –
- 1. emacs modifica in modo programmatico la dimensione della finestra
- 2. Modifica della dimensione del batch di sospensione in modo programmatico
- 3. determina la dimensione dell'asse della matrice in pixel
- 4. C'è un modo per determinare la dimensione fisica del monitor?
- 5. Determina la dimensione corretta in loadView
- 6. come ridurre la dimensione del video prima di caricare sul server in modo programmatico su Android
- 7. Get dimensione fisica dello schermo in Qt
- 8. Come calcolare la dimensione della directory su FTP?
- 9. Determina C# Dimensione codice
- 10. Immagine della schermata di acquisizione in C++ su OSX
- 11. In che modo ffprobe determina la durata?
- 12. Come rimuovere la scheda SD in modo programmatico su Android
- 13. Come avviare la schermata principale in modo programmatico su Android
- 14. Come cambiare la tastiera in modo programmatico su iOS?
- 15. serializza in modo programmatico la classe su xsd
- 16. In tal caso la dimensione fisica di un file sarà inferiore alla dimensione logica?
- 17. grep funziona in modo diverso su OSX
- 18. Evidenziare in modo programmatico la cella UITableView
- 19. Cosa determina la dimensione di un oggetto salvato in R?
- 20. evidenzia in modo programmatico UIBarButtonItem
- 21. mem :: sostituisce in ruggine
- 22. Determina in modo programmatico il numero di tratti in un carattere cinese?
- 23. Come ottenere la dimensione fisica corretta del monitor?
- 24. Dimensione carattere pulsante programmatico Android in pixel
- 25. Cambia la dimensione popup della thickbox in modo dinamico
- 26. Oracle - Determina la dimensione massima supportata per l'espressione regolare
- 27. Leggere la memoria fisica in Windows 8
- 28. Come si ottiene la dimensione totale della memoria fisica utilizzando PowerShell senza WMI?
- 29. Factor in modo programmatico un numero elevato
- 30. HTML5; rilevare la presenza della tastiera fisica in Javascript
Nice & facile per lo scripting! Inoltre se vuoi solo memoria: 'sysctl hw.memsize' o' sysctl -a | grep mem' – TrinitronX
Nota: hw.physmem e hw.usermem restituiscono valori minori per i sistemi su [2 GB RAM] (http://superuser.com/questions/197059/mac-os-x-sysctl-get-total-and -free-memory-size # comment199969_197085) [Discussione muc.lists.FreeBSD.hackers] (https://groups.google.com/d/msg/muc.lists.freebsd.hackers/P58uQQcRiSo/1lAwPcOfsYIJ) Vedere '/usr/include/sys/sysctl.h' commenti per maggiori informazioni. – TrinitronX