램이 채워질 때 경고하는 간단한 프로그램을 작성하려고하는데 sysinfo()에 대한 몇 가지 문제가 있는데 샘플 프로그램은 C이고, 코드가 괜찮을 것 같은 예제를 가진 사이트에서 그것을 잡았는데 왜 이것이 일어날 수 있는지에 대한 아이디어가 있습니까? 이잘못된 값을 반환하는 C - sysinfo() i686
코드는 다음과 같습니다 ... 제 모국어 아니라 내 영어에 대한 유감 :
/* sysinfo.c by [email protected]
*
* Display the uptime, load averages, total ram, free ram,
* shared ram, buffered ram, total swap, free swap, and
* number of processes running on a linux machine.
*
* http://www.metalshell.com/
*
*/
#include <sys/sysinfo.h>
#include <stdio.h>
int main() {
int days, hours, mins;
struct sysinfo sys_info;
if(sysinfo(&sys_info) != 0)
perror("sysinfo");
// Uptime
days = sys_info.uptime/86400;
hours = (sys_info.uptime/3600) - (days * 24);
mins = (sys_info.uptime/60) - (days * 1440) - (hours * 60);
printf("Uptime: %ddays, %dhours, %dminutes, %ldseconds\n",
days, hours, mins, sys_info.uptime % 60);
// Load Averages for 1,5 and 15 minutes
printf("Load Avgs: 1min(%ld) 5min(%ld) 15min(%ld)\n",
sys_info.loads[0], sys_info.loads[1], sys_info.loads[2]);
// Total and free ram.
printf("Total Ram: %ldk\tFree: %ldk\n", sys_info.totalram/1024,
sys_info.freeram/1024);
// Shared and buffered ram.
printf("Shared Ram: %ldk\n", sys_info.sharedram/1024);
printf("Buffered Ram: %ldk\n", sys_info.bufferram/1024);
// Swap space
printf("Total Swap: %ldk\tFree: %ldk\n", sys_info.totalswap/1024,
sys_info.freeswap/1024);
// Number of processes currently running.
printf("Number of processes: %d\n", sys_info.procs);
return 0;
}
http://www.metalshell.com/source_code/114/Sysinfo.html 해당 링크의 – kainlite
은 소스 코드입니다 ... – kainlite
어떤 문제가 있습니까? 무엇이 제대로 작동하지 않습니까? –